Access a node or a set of nodes through an expression that is a
subset of an XPath RelativeLocationPath in abbreviated form.
That means one or more Steps separated by "/" or "//". A Step
consists of an AxisSpecifier followed by a NodeTest and then
optionally by one or more Predicate's.
"/" before a Step causes it to be matched only against the
immediate children of the node(s) selected by the previous Step.
"//" before a Step causes it to be matched against any children
in the tree below the node(s) selected by the previous Step.
The initial selection before the first Step is this element.
The currently allowed AxisSpecifier NodeTest combinations are:
name to select all elements with the given name. The
name can be "*" to select all.
@name to select all attributes with the given name. The
name can be "*" to select all.
comment() to select all comments.
text() to select all text and CDATA blocks. Note that
all entity references are also selected, under the assumption
that they would expand to text only.
processing-instruction("name") to select all processing
instructions with the given name. The name can be left out to
select all. Either ' or " may be used to delimit
the name. For compatibility, it can also occur without
surrounding quotes.
node() to select all nodes, i.e. the whole content of an
element node.
. to select the currently selected element itself.
A Predicate is on the form [PredicateExpr] where
PredicateExpr currently can be in any of the following forms:
An integer indexes one item in the selected set, according to
the document order. A negative index counts from the end of
the set.
A RelativeLocationPath as specified above. It's executed for
each element in the selected set and those where it yields an
empty result are filtered out while the rest remain in the
set.
A RelativeLocationPath as specified above followed by
="value". The path is executed for each element in the
selected set and those where the text result of it is equal to
the given value remain in the set. Either ' or "
may be used to delimit the value.
If xml_format is nonzero, the return value is an xml
formatted string of all the matched nodes, in document order.
Otherwise the return value is as follows:
Attributes are returned as one or more index/value pairs in a
mapping. Other nodes are returned as the node objects. If the
expression is on a form that can give at most one answer (i.e.
there's a predicate with an integer index) then a single mapping
or node is returned, or zero if there was no match. If the
expression can give more answers then the return value is an
array containing zero or more attribute mappings and/or nodes.
The array follows document order.