Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
The = sign is used for equality; != is used for inequality.
Two operands are supplied for a comparison operation: the vector or scalar that is to be compared (the left-side value, or lvalue) and the scalar value (the right-side value, or rvalue) against which to compare. The rvalue must either be a scalar or a value that can be cast at run time to a scalar.
If the lvalue of a comparison is a set, " any" semantics are used for the comparison operators. That is, the result of a comparison is True if any item in the set meets the condition.
The lvalue of an expression cannot be a literal. For example, "3" = a is not allowed. If the rvalue is an attribute, the text(lvalue) is compared to the text(rvalue).
All elements and attributes are strings but are automatically cast as integer values for numeric comparisons. Literal numeric values are cast to long or double types during comparison operations, as shown in the following table.
Literal type | Comparison | Example |
---|---|---|
String |
text(lvalue) op text(rvalue) |
a < GGG |
Integer |
(long) lvalue op (long) rvalue |
a < 3 |
Real |
(double) lvalue op (double) rvalue |
a < 3.1 |
Single or double quotation marks can be used for string delimiters in expressions. This makes it easier to construct and pass patterns from within scripting languages.
Examples
Find all author elements whose last name is Bob.
Copy Code | |
---|---|
author[last-name = "Bob"] |
Find all author elements where the first last-name is Bob.
Copy Code | |
---|---|
author[last-name[1] = "Bob"] |
Find all authors where the fromattribute is not equal to "Harvard".
Copy Code | |
---|---|
degree[@from != "Harvard"] |
Find all authors where the last name is the same as the /guest/last-name element.
Copy Code | |
---|---|
author[last-name = /guest/last-name] |
Find all authors whose text is "Matthew Bob".
Copy Code | |
---|---|
author[. = "Matthew Bob"] |
Order of Precedence for Comparisons
Comparisons with regard to data types obey the order of precedence.
- If at least one operand is a Boolean, each operand is first
converted to a Boolean.
- Otherwise, if at least one operand is a number, each operand is
first converted to a number.
- Otherwise, if at least one operand is a date, each operand is
first converted to a date.
- Otherwise, both operands are first converted to strings.
Comparing Dates
If one operand is a node-set and the other is a date, the comparison will be True if and only if there is a node in the node-set operand such that the result of performing the comparison on the date operand and on the result of converting the value of that node to a date using the msxslt:date()function is True.
Two dates are equal only if an unambiguous canonical format for the date (for example, GMT representation as a number) indicates that they are so.
A date is less than another date if it indicates a date/time earlier than the second date/time, and so on.
Binary Comparison Operators
A set of binary comparison operators compares numbers and strings and returns Boolean results. <, <=, >, and >= are used for less than, less than or equal, greater than, and greater than or equal. Single or double quotation marks can be used for string delimiters in expressions. This makes it easier to construct and pass patterns within scripting languages.
Examples
Find all author elements whose last name is "Bob" and whose price is > 50.
Copy Code | |
---|---|
author[last-name = "Bob" and price > 50] |
Find all authors where the fromattribute is not equal to "Harvard".
Copy Code | |
---|---|
degree[@from != "Harvard"] |
Find all authors whose last name begins with "M" or greater.
Copy Code | |
---|---|
author[last-name >= "M"] |
Find the first three books (1, 2, 3).
Copy Code | |
---|---|
book[index() <= 3] |