XPath Axes
The XML Example Document
We will use the following XML document in the examples below.
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
|
XPath Axes
An axis defines a node-set relative to the current node.
AxisName |
Result |
ancestor |
Selects all ancestors (parent, grandparent, etc.) of the current node |
ancestor-or-self |
Selects all ancestors (parent, grandparent, etc.) of the current node
and the current node itself |
attribute |
Selects all attributes of the current node |
child |
Selects all children of the current node |
descendant |
Selects all descendants (children, grandchildren, etc.) of the current node |
descendant-or-self |
Selects all descendants (children, grandchildren, etc.) of the current node
and the current node itself |
following |
Selects everything in the document after the closing tag of the current node |
following-sibling |
Selects all siblings after the current node |
namespace |
Selects all namespace nodes of the current node |
parent |
Selects the parent of the current node |
preceding |
Selects everything in the document that is before the start tag of the current node |
preceding-sibling |
Selects all siblings before the current node |
self |
Selects the current node |
Location Path Expression
A location path can be absolute or relative.
An absolute location path starts with a slash ( / ) and a relative location
path does not. In both cases the location path consists of one or more
steps, each separated by a slash:
An absolute location path:
/step/step/...
A relative location path:
step/step/...
|
Each step is evaluated against the nodes in the current node-set.
A step consists of:
- an axis (defines the tree-relationship between the selected nodes and the current node)
- a node-test (identifies a node within an axis)
- zero or more predicates (to further refine the selected
node-set)
The syntax for a location step is:
axisname::nodetest[predicate]
|
Examples
Example |
Result |
child::book |
Selects all book nodes that are children of the current node |
attribute::lang |
Selects the lang attribute of the current node |
child::* |
Selects all children of the current node |
attribute::* |
Selects all attributes of the current node |
child::text() |
Selects all text child nodes of the current node |
child::node() |
Selects all child nodes of the current node |
descendant::book |
Selects all book descendants of the current node |
ancestor::book |
Selects all book ancestors of the current node |
ancestor-or-self::book |
Selects all book ancestors of the current node - and the
current as well if it is a book node |
child::*/child::price |
Selects all price grandchildren of the current node |
|