Home >Online Product Documentation >Table of Contents >Supported Axes
Supported Axes
The XPath processor supports all XPath axes:
About the child Axis
The child
axis contains the children of the context node. The following examples select the book
children of the context node:
If the context node is the bookstore
element, each of these queries return the book
elements in bookstore.xml.
When you do not specify an axis, the child
axis is assumed.
About the descendant Axis
The descendant
axis contains the descendants of the context node. A descendant is a child or a child of a child, and so on. The descendant
axis never contains attribute nodes. The following example selects the first-name
element descendants of the context node:
If the context node is the bookstore
element, this query returns all first-name
elements in the document. If the context node is the first publication
element, this query returns the first-name
element that is in the publication
element.
About the parent Axis
The parent
axis contains the parent of the context node, if there is one. The following example selects the parent of the context node if it is a title
element:
If the first title
element in bookstore.xml
is the context node, this query returns the first book
element.
Note that dot dot
(..
) is equivalent to parent::node()
.
About the ancestor Axis
The ancestor
axis contains the ancestors of the context node. The ancestors of the context node consist of the parent of the context node and the parent's parent, and so on. The ancestor
axis always includes the root node, unless the context node is the root node. The following example selects the book
ancestors of the context node:
If the context node is the first title
element in bookstore.xml
, this query returns the first book
element.
About the following-sibling Axis
The following-sibling
axis contains all the siblings of the context node that come after the context node in document order. If the context node is an attribute node or namespace node, the following-sibling
axis is empty. The following example selects the next book
sibling of the context node:
If the context node is the first book
element in bookstore.xml,
this query returns the second book
element.
About the preceding-sibling Axis
The preceding-sibling
axis contains all the siblings of the context node that precede the context node in reverse document order. If the context node is an attribute node or namespace node, the preceding-sibling
axis is empty. The following example selects the closest previous book
sibling of the context node:
If the context node is the third book
element in bookstore.xml
, this query returns the second book
element. If the context node is the first book
element, this query returns the empty set.
About the following Axis
The following
axis contains the nodes that follow the context node in document order. This can include
- Following siblings of the context node
- Descendants of following siblings of the context node
- Following siblings of ancestor nodes
- Descendants of following siblings of ancestor nodes
The following
axis never includes
The following example selects the book
elements that are following siblings of the context node and that follow the context node in document order:
If the context node is the first book
element, this query returns the last three book
elements. If the context node is the second book
element, this query returns only the third and fourth book
elements.
About the preceding Axis
The preceding
axis contains the nodes that precede the context node in reverse document order. This can include:
- Preceding siblings of the context node
- Descendants of preceding siblings of the context node
- Preceding siblings of ancestor nodes
- Descendants of preceding siblings of ancestor nodes
The preceding
axis never includes
The following example selects the book
elements that are preceding siblings of the context node and that precede the context node in document order:
If the third book
element is the context node, this query returns the first two book
elements. If the first book
element is the context node, this query returns the empty set.
About the attribute Axis
The attribute
axis contains the attributes of the context node. The attribute
axis is empty unless the context node is an element. The following examples are equivalent. They both select the style
attributes of the context node. The at sign (@) is an abbreviation for the attribute
axis.
If the context node is the second book
element, this query returns a style
attribute whose value is textbook
.
About the namespace Axis
The namespace
axis contains the namespace nodes that are in scope for the context node. This includes namespace declaration attributes for the
If more than one declaration defines the same prefix, the resulting node set includes only the definition that is closest to the context node.
If the context node is not an element, the namespace
axis is empty.
For example, if an element is in the scope of three namespace declarations, its namespace
axis contains three namespace declaration attributes.
About the self Axis
The self
axis contains just the context node itself. The following example selects the context node if it is a title
element:
Note that dot (.
)
is equivalent to self::node()
.
About the descendant-or-self Axis
The descendant-or-self
axis contains the context node and the descendants of the context node. The following example selects the first-name
element descendants of the context node and the context node itself if it is a first-name
element:
If the context node is the first-name
element that is in the author
element in the second book
element, this query returns just the context node. If the context node is the second book
element, this query returns the two first-name
elements contained in the second book
element.
Note that //
is equivalent to descendant-or-self::node()
, while //name
is equivalent to descendant-or-self::node()/child::name
.
About the ancestor-or-self Axis
The ancestor-or-self
axis contains the context node and the ancestors of the context node. The ancestor-or-self
axis always includes the root node. The following example selects the author
element ancestors of the context node and the context node itself if it is an author
element:
If the context node is the award
element in the first book
element, this query returns the first author
element.