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 para is equivalent to para[position()=3].