Next / Previous / Contents / Shipman's homepage

4.5. XPath operators

Here are the operators used in XPath expressions. In the table below, e stands for any XPath expression.

e1+e2 If e1 and e2 are numbers, their sum.
e1-e2 e1 minus e2.
e1*e2 The product of e1 and e2.
e1 div e2 If e1 and e2 are numbers, their quotient as a floating-point value.
e1 mod e2 The floating-point remainder of e1 divided by e2.
e1 = e2 Tests to see if e1 equals e2.
e1 &lt; e2 Tests to see if e1 is less than e2. You can't say e1 < e2 inside an attribute: the less-than sign must be escaped as "&lt;".
e1 &lt;= e2 Tests to see if e1 is less than or equal to e2.
e1 &gt; e2 Tests for greater-than.
e1 &gt;= e2 Tests for greater or equal.
e1 != e2 Tests for inequality.
e1 and e2 True if both e1 and e2 are true. If e1 is false, e2 is not evaluated.
e1 or e2 True if either e1 or e2 is true. If e1 is true, e2 is not evaluated.
/e Evaluate e starting at the document node. For example, "/barge" selects the barge element that is the child of the document node.
e1/e2 The / operator separates levels in a tree. For example, "/barge/load" selects all load children of the barge element child of the document node.
//e Abbreviation for descendant-or-self::e.
./e Abbreviation for self::e.
../e Abbreviation for parent::e.
@e Abbreviation for attribute::e.
e1|e2 Selects the union of nodes that match e1 and those that match e2.
* A wild-card operator; matches all nodes of the proper type for the context. For example, "*" selects all child elements of the context node, and "feet/@*" selects all attributes of the context node's feet children.
e1[e2] Square brackets enclose a predicate, which specifies an expression e2 that selects nodes from a larger set e1.For example, in the XPath expression "para[@class='note']", the para selects all para children of the context node, and then the predicate selects only the children that have an attribute class="note". Another example: "item[1]" would select the first item child of the context node.
$e The dollar sign indicates that the following name is a variable name. For example, in an XSLT script, if variable n is set to 357, xsl:value-of select="$n"/ is expanded to the string "357".

Here is a table showing the precedence of the XPath operators, from highest to lowest: