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 |
Create a free Flash website with our simple, online web design editing platform. Stunning templates
and user-friendly tools make website building easy and fun.
Start Creating your free website now!

Need an easy way to get data into XML, or transform XML to another format?
MapForce lets you map XML data to/from any combination of XML, database, flat file,
Excel 2007, XBRL, or Web services data. Then it transforms data instantly or
auto-generates royalty-free code for recurrent conversions.
New features in Version 2010!
- Easy-to-use, graphical data mapping interface
- Instant data transformation
- XSLT 1.0/2.0 and XQuery code generation
- Java, C#, and C++ code generation
- Advanced data processing functions
- Support for all major relational databases including SQL Server, IBM DB2, Oracle, and more
- Visual Studio & Eclipse integration
- Available in 32-bit and 64-bit versions
Download a fully-functional trial today!
|
|
|
|