Table of contentsAppendices |
2.4 PredicatesPredicatesAn axis is either a forward axis or a reverse axis. An axis that only ever contains the context node or nodes that are after the context node in [document order] is a forward axis. An axis that only ever contains the context node or nodes that are before the context node in [document order] is a reverse axis. Thus, the ancestor, ancestor-or-self, preceding, and preceding-sibling axes are reverse axes; all other axes are forward axes. Since the self axis always contains at most one node, it makes no difference whether it is a forward or reverse axis. The proximity position of a member of a node-set with respect to an axis is defined to be the position of the node in the node-set ordered in document order if the axis is a forward axis and ordered in reverse document order if the axis is a reverse axis. The first position is 1. A predicate filters a node-set with respect to an axis to produce a new node-set. For each node in the node-set to be filtered, the [PredicateExpr] is evaluated with that node as the context node, with the number of nodes in the node-set as the context size, and with the [proximity position] of the node in the node-set with respect to the axis as the context position; if [PredicateExpr] evaluates to true for that node, the node is included in the new node-set; otherwise, it is not included. A
[PredicateExpr]
is evaluated by
evaluating the
[Expr]
and converting the result
to a boolean. If the result is a number, the result will be converted
to true if the number is equal to the context position and will be
converted to false otherwise; if the result is not a number, then the
result will be converted as if by a call to the
boolean function. Thus a location path
|