Previous: XPath Functions - XPath
The following examples show how to apply an axis, node tests, and
predicates.
The examples contained here refer to this document fragment:
<document>
<chapter name="XPath">
<para>This chapter introduces XPath, a language used to specify
parts of an XML document...</para>
<para align="center">This paragraph is centered for no real
reason.</para>
<para>This paragraph's alignment is not specified.</para>
<para>Lots of XML examples seem to use the para tag.</para>
</chapter>
<chapter name="XSLT">
<para>I was confused when I kept seeing this para show up in all
the XPath and XSLT examples.</para>
<para>I though that para was some keyword used in XPath.</para>
<para align="center">It is not. </para>
</chapter>
<appendix>
<para>This is a paragraph in the appendix.</para>
</appendix>
</document>
- / - This matches the root of the document, which
contains as it's only child node the document element. This test
does not match the document element itself.
- para - This node test matches the child para
elements of the context node. Notice that the axis is not
specified; the child axis is the default. The optional predicate
is omitted.
- para[1] - Matches the first para element that is a
child of the context node. The predicate is in this case a simple
integer which specifies the node to retrieve from the node-set
returned by the node test (refer to the previous example).
- para[position()=1] - Same as the previous example,
except the position() call is used to determine where each node
matched by the node test is in the set. The previous example is
actually a shortcut that is the same as this example.
- para[attribute::align] - This matches all of the para
elements that are children of the context node and that have an
align attribute.
- para[@align] - This is the same as the previous
example; the "@" shortcut is used to refer to the attribute
axis.
- para[@align="center"] - Same as the previous example,
except only child para elements which have an align attribute equal to
"center" are matched.
- para[@align="center"][1] - Same as the previous
example, except only the first node is matched.
- descendant::para - Matches all of the para elements
which are descended from the context node. Recall that the
descendant axis returns the child nodes, the grandchildren, the
great-grandchildren, and so on.
- .//para - Same as the previous example, using the
shortcut for the descendant-or-self axis.
- /descendant::para - Matched all of the para elements in
the entire document.
- //para - Matches all para elements in the entire
document, same as above, but using the abbreviation.
- child::chapter - Matched the chapter elements that are
children of the context node.
- child::appendix - Matches the appendix elements that
are children of the context node.
- child::*[self::chapter or self::appendix] - Matches all
of the chapter and appendix elements that are children of the
context node. Note that the * abbreviation is used to refer to all
of the nodes in the child axis and that the self axis is used
within the predicates to match only the node on which the
predicate is being evaluated.
- .. - Matches the parent node, using the shortcut for
parent::node().
- ../@align - Matches the align attribute of the parent
node.
- /chapter/para[@align="center"][1] - Matches the first
para element that is a child of a chapter element that is in turn
a child of the root node. This XPath expression also requires that
the para element match has an align attribute that is equal to
"center".
- chapter[@name="XPath"]/para[2] - Matches the second
para element in the chapter element having a name attribute that
is equal to "XPath".