Book HomeXML in a NutshellSearch this book

22.2. Data Types

Each XPath expression evaluates to one of four types:

Boolean
A binary value that is either true or false. In XPath, Booleans are most commonly produced by using the comparison operators =, !=, <, >, <=, and >=. Multiple conditions can be combined using the and and or operators, which have their usual meaning in logic (e.g., 3>2 or 2>1 is true.) XPath does not offer Boolean literals. However, the true( ) and false( ) functions fill that need.

Number
All numbers in XPath, which are IEEE 754-compliant, 64-bit floating point numbers. This is the same as the double type in Java. Numbers range from 4.94065645841246544e-324d to 1.79769313486231570e+308d, and are either positive or negative. Numbers also include the special values Inf (positive infinity), -Inf (negative infinity), and NaN (not a number), which is used for the results of illegal operations, such as dividing by zero. XPath provides all the customary operators for working with numbers, including:

+
Addition

-
Subtraction; however, this operator should always be surrounded by whitespace to avoid accidental misinterpretation as part of an XML name

*
Multiplication

div
Division

mod
Taking the remainder

String
Sequence of zero or more Unicode characters. String literals are enclosed in either single or double quotes, as convenient. Unlike Java, XPath does not allow strings to be concatenated with the plus sign. However, the concat( ) function serves this purpose.

Node-set
Collection of zero or more nodes from an XML document. Location paths produce most node-sets. Generally, a single node-set can contain every kind of node: root, element, attribute, namespace, comment, processing instruction, and text. However, most node-sets contain a single type of node.

Some standards that use XPath also define additional data types. For instance, XSLT defines a result tree fragment type that represents the result of processing an XSLT instruction or instantiating a template. XPointer defines a location set type that extends node-sets to include points and ranges.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.