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 |

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 data integration code for recurrent conversions.
New features in Version 2010!
Download a free, fully functional 30-day trial to experience the following features:
- 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
Download a fully-functional trial today!
|
|
|
|