Pattern syntax for XSLT 2.0
Saxon supports the full XSLT syntax for patterns. The rules below describe a
simplified form of this syntax (for example, it omits the legal but useless pattern
Note: not all combinations are allowed. If the anchor is
// then the
remainder is mandatory.
The form of a literal is as defined in expressions; and a predicate is itself a
boolean or numeric expression. As with predicates in expressions, a numeric
[P] is shorthand for the boolean predicate
Informally, a pattern consists of either a single path or a sequence of paths separated by vertical bars. An element matches the match-pattern if it matches any one of the paths.
A path consists of a sequence of path-parts separated by either
//. There is an optional separator (
//) at the start; a
// has no effect and can be
ignored. The last path-part may be an element-match, a text-match, an
attribute-match, a pi-match, or a node-match; in practice, a path-part other than
the last should be an element-match.
The axis syntax
attribute:: may also be used in
patterns, as described in the XSLT specification.