In the location path ancestor :: NAME , which refers to a <NAME> element that is an ancestor of the context node, ancestor is the axis. XPath supports many different axes, and heres the complete list:
The ancestor axis holds the ancestors of the context node; the ancestors of the context node are the parent of context node and the parents parent and so forth, back to and including the root node.
The ancestor-or-self axis holds the context node and the ancestors of the context node.
The attribute axis holds the attributes of the context node.
The child axis holds the children of the context node.
The descendant axis holds the descendants of the context node. A descendant is a child or a child of a child and so on.
The descendant-or-self axis contains the context node and the descendants of the context node.
The following axis holds all nodes in the same document as the context node that come after the context node.
The following-sibling axis holds all the following siblings of the context node. A sibling is a node on the same level as the context node.
The namespace axis holds the namespace nodes of the context node.
The parent axis holds the parent of the context node.
The preceding axis contains all nodes that come before the context node.
The preceding-sibling axis contains all the preceding siblings of the context node. A sibling is a node on the same level as the context node.
The self axis contains the context node.
In the following example template I use the descendant axis to indicate that I want to match descendants of the context node, which include child nodes, grandchild nodes, great-grandchild nodes, and so on:
<xsl:template match="PLANET"> <DATA> <NAME> <xsl:value-of select="descendant::NAME"/> </NAME> <MASS> <xsl:value-of select="descendant::MASS"/> </MASS> <DAY> <xsl:value-of select="descendant::DAY"/> </DAY> </DATA> </xsl:template>
This chapter looks at each of these axes. In this example, descendant is the axis, and the element names NAME , MASS , and DAY are node tests .