In the formal rules for evaluating a pattern, the steps in a
RelativePathPattern
are evaluated from left to right, and the choice of axis determines whether this step looks at the children or the attributes of the nodes found in the previous step.
Looking at it informally, it is simplest to think of the axis specifier as simply a way of saying what kind of node is required.
- If the child axis is used and the
NodeTest
is a
NameTest
(for example,
title
,
*
, or
svg:*
) then we are looking for an element node.
- If the child axis is used and the
NodeTest
is a
KindTest
(for example,
comment()
or
text()
), then we are looking for that kind of node. If the
NodeTest
is
node()
, then we are looking for any node on the child axis: specifically, elements, text nodes, comments, or processing instructions. Note that the pattern
node()
, which is short for
child::node()
, will not match document nodes, attributes, or namespace nodes, because these nodes never appear as the child of another node.