A pattern is a type of expression that returns a set of nodes based on a set of conditions for a node. Nodes that satisfy the conditions match the pattern. The syntax for patterns is a subset of the syntax for expressions. In particular, location paths that meet certain restrictions can be used as patterns. An expression that is also a pattern always evaluates to an object of type node-set. A node matches a pattern if the node is a member of the result of evaluating the pattern as an expression with respect to some possible context; the possible contexts are those whose context node is the node being matched or one of its ancestors.
The following table lists examples of patterns.
Pattern | Matches |
---|---|
Para |
any para element |
* |
any element |
chapter|appendix |
any chapter element and any appendix element |
olist/item |
any item element with an olist parent |
appendix//para |
any para element with an appendix ancestor element |
/ |
the root node |
text() |
any text node |
processing-instruction() |
any processing instruction |
node() |
any node other than an attribute node and the root node |
id("W11") |
the element with unique ID W11 |
para[1] |
any para element that is the first para child element of its parent |
*[position()=1 and self::para] |
any para element that is the first child element of its parent |
para[last()=1] |
any para element that is the only para child element of its parent |
items/item[position()>1] |
any item element that has an items parent and that is not the first item child of its parent |
item[position() mod 2 = 1] |
any item element that is an odd-numbered item child of its parent |
div[@class="appendix"]//p |
any p element with a div ancestor element that has a class attribute with value appendix |
@class |
any class attribute (not any element that has a class attribute) |
@* |
any attribute |