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 |
 |
|
Get Your Diploma!
W3Schools' Online Certification Program is the perfect solution for busy
professionals who need to balance work, family, and career building.
The HTML Certificate is for developers who want to document their knowledge of HTML, XHTML, and CSS.
The JavaScript Certificate is for developers who want to document their knowledge of JavaScript and the HTML DOM.
The ASP Certificate is for developers who want to document their knowledge of ASP, SQL, and ADO.
|
|