The child
axis selects from the children of the
context node. For example, consider this XPointer:
xpointer(/child::FAMILYTREE/child::PERSON[position()=3]/child::NAME)
Reading from right to left, it selects the NAME
child of the third PERSON
element that's a child of
the FAMILYTREE
element that's a child of the root
element. In this example, there's only one such element, but if
there are more than one then all are returned. For instance
consider this XPointer:
xpointer(/child::FAMILYTREE/child::PERSON/child::NAME)
This selects all NAME
children of
PERSON
elements that are children of
FAMILYTREE
elements that are children of the root.
They're a dozen of these in Example 17-1.
It's important to note that the child
axis only
selects from the immediate children of the context node.
For example, consider this URI:
http://www.theharolds.com/genealogy.xml#xpointer(/child::NAME)
This points nowhere because there are no NAME
elements in the document that are direct, immediate children of
the root node. There are a dozen NAME
elements that
are indirect children. If you'd like to refer to these, you
should use the descendant
axis instead of
child
.
As in XSLT, the child axis is implied if no explicit axis name is present. For instance, the above three XPointers would more likely be written in this abbreviated form:
xpointer(/FAMILYTREE/PERSON[position()=3]/NAME)
xpointer(/FAMILYTREE/PERSON/NAME)
xpointer(/NAME)