Axes

To this point, we’ve been able to select child elements, attributes, text, comments, and processing instructions with some fairly simple XPath expressions. Obviously, we might want to select many other things, such as:

  • All ancestors of the context node

  • All descendants of the context node

  • All previous siblings or following siblings of the context node (siblings are nodes that have the same parent)

To select these things, XPath provides a number of axes (plural of axis) that let you specify various collections of nodes. There are 13 axes in all; we’ll discuss all of them here, even though most won’t be particularly useful to you. To use an axis in an XPath expression, type the name of the axis, a double colon (::), and the name of the element you want to select, if any.

Before we define all of the axes, though, we need to talk about XPath’s unabbreviated syntax.

Unabbreviated syntax

To this point, all the XPath expressions we’ve looked at used the XPath abbreviated syntax. Most of the time, that’s what you’ll use; however, most of the lesser-used axes can only be specified with the unabbreviated syntax. For example, when we wrote an XPath expression to select all of the <line> elements in the current context, we used the abbreviated syntax:

<xsl:apply-templates select="line"/>

If you really enjoy typing, you can use the unabbreviated syntax to specify that you want all of the <line> children of the current context:

<xsl:apply-templates select="child::line"/>

We’ll go through all of the ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.