SAXONICA

Saxon Documentation
Full Contents
About Saxon
Changes in this Release
Conditions of Use
Using XSLT 2.0
Using XQuery
Handling Source Documents
XML Schema Processing
The XPath API
Saxon on .NET
Extensibility
Saxon Extensions
Sample Saxon Applications
The Saxon SQL Extension
XSLT Elements
XPath 2.0 Expression Syntax
| Introduction
| Constants
| Variable References
| Function Calls
» | Axis steps
| Parentheses and operator precedence
| Filter expressions
| Path expressions
| Cast as, Treat as
| Set difference and intersection
| Union
| Arithmetic expressions
| Range expressions
| Comparisons
| Instance of and Castable as
| Conditional Expressions
| Quantified Expressions
| For Expressions
| Boolean expressions: AND and OR
| Sequence expressions
Function Library
Standards Conformance

# Axis steps

The basic primitive for accessing a source document is the axis step. Axis steps may be combined into path expressions using the path operators `/` and `//`, and they may be filtered using filter expressions in the same way as the result of any other expression.

An axis step has the basic form `axis :: node-test`, and selects nodes on a given axis that satisfy the node-test. The axes available are:

ancestor | Selects ancestor nodes starting with the current node and ending with the document node
ancestor-or-self | Selects the current node plus all ancestor nodes
attribute | Selects all attributes of the current node (if it is an element)
child | Selects the children of the current node, in documetn order
descendant | Selects the children of the current node and their children, recursively (in document order)
descendant-or-self | Selects the current node plus all descendant nodes
following | Selects the nodes that follow the current node in document order, other than its descendants
following-sibling | Selects all subsequent child nodes of the same parent node
namespace | Selects all the in-scope namespaces for an element (this axis is deprecated in XPath 2.0, but Saxon continues to support it)
parent | Selects the parent of the current node
preceding | Selects the nodes that precede the current node in document order, other than its ancestors
preceding-sibling | Selects all preceding child nodes of the same parent node
self | Selects the current node

When the child axis is used, `child::` may be omitted, and when the attribute axis is used, `attribute::` may be abbviated to `@`. The expression `parent::node()` may be shortened to `..`

The expression `.` is no longer synonymous with `self::node()`, since it may now select items that are not nodes. If the context item is not a node, any use of a path expression will raise an error.

The node-test may be, for example:

- a node name

- `prefix:*` to select nodes in a given namespace

- `*:localname` to select nodes with a given local name, regardless of namespace

- `text()` (to select text nodes)

- `node()` (to select any node)

- `processing-instruction()` (to select any processing instruction)

- `processing-instruction('literal')` to select processing instructions with the given name (target)

- `comment()` to select comment nodes

- `element()` or `element(*)` to select any element node

- `element(N)` to select any element node named N

- `element(*, T)` to select any element node whose type annotation is T, or a subtype of T

- `element(N, T)` to select any element node whose name is N and whose type annotation is T, or a subtype of T

- `schema-element(N)` to select any element node whose name is N, or an element in the substitution group of N, that conforms to the schema-defined type for a global element declaration named N in an imported schema

- `attribute` or `attribute(*)` to select any attribute node

- `attrbute(N)` to select any attribute node named N

- `attribute(*, T)` to select any attribute node whose type annotation is T, or a subtype of T

- `attribute(N, T)` to select any attribute node whose name is N and whose type annotation is T, or a subtype of T

- `schema-attribute(N)` to select any attribute node whose name is N, that conforms to the schema-defined type for a global attribute declaration named N in an imported schema

Next