XPath - Next: XPath Axis
- A node refers to some object, usually an element or an
attribute, or possibly a namespace, a processing instruction, a
comment, or text.
- context node
- The context node refers to the node which is current being
processed. If an XSLT processor is working on a stylesheet, the
context node is usually the node matched by an xsl:template or
- principal node type
- The principal node type is the type of the context node. The
type will be one of element, attribute, namespace, processing
instruction, comment, or text.
- location step
- An XPath expression is built from multiple location steps
connected together with a slash(/). A location step locates a
particular node in a particular axis, and an optional
- An axis refers to a set of nodes with some well defined
relationship to the context node.
- node test
- A node test is usually just the name of a node, or some pattern
that matches the names of nodes; it is used to find matching nodes
in the source document. Node tests may use * to match all nodes of
the principal node type in a particular axis. A node test of
node() returns all nodes, while a node test of text() returns all
of the text nodes. Similarly, processing-instruction() returns
all of the processing instruction nodes, and comment() returns
comment nodes. Refer to http://www.w3.org/TR/xpath#node-tests, section 2.3 of the XPath specification for
- A pattern in XPath is basically an XPath expression, but with
only a subset of the functionality. A pattern may only return
results that are nodesets, its location steps can only use the
child or attribute axes. Patterns may not use the
descendant-or-self axis, but the // and / operators are still
valid for patterns.
- A predicate is used to filter the results of the node test. A
predicate is basically another XPath expression evaluated for each
node in the node-set returned by the node test, except that you
can also use an integer to get a specific node along the
axis. Predicates may be used to limit the results of a node test
to those nodes that have certain attributes or relationships to
other nodes. Expressions in a predicate can be combined by using
the logical "and" and "or" operators. Multiple predicates can be
applied to the results of a node test by simply appending (not
nesting) more square bracket pairs containing predicate
expressions. See http://www.w3.org/TR/xpath#predicates, section 2.4 of
the XPath specification for more information.
The syntax for building a location step is pretty straight forward. It
consists of three parts; the axis name, the node test, and the
predicate. The axis name is connected to the node test with double
colons (e.g. parent::animal), and the predicate is enclosed in square
XPath location steps can be connected with a /, just like in a
(UNIX) directory structure. If we wanted to start from the root of the document and reference the people nodes, we would use an expression
like this: /zoo/people/. Like a directory structure, an empty location
step / refers to the root node of the document.
The child axis is the default axis; it is used if the axis is
omitted from the XPath expression. Two other syntax notes worthy of
mention are that the parent axis may be abbreviated as .. (e.g. use
../animals instead of parent::animals), and the attribute axis may be
abbreviated as @ (e.g. use @job instead of attribute::job).
If you want to use a node test to get the current context node,
then the node() function provides this.