Introduction
XPath is an expression
language
that is fundamental to XML processing. You can no more master XSLT
without mastering XPath than you can master English without learning
the alphabet. Several readers of the first edition of XSLT
Cookbook took me to task for not covering XPath. This
chapter has been added partly to appease them but more so due to the
greatly increased power of the latest XPath 2.0 specifications.
However, many of these recipes are applicable to XPath 1.0 as well.
In XSLT 1.0, XPath plays three crucial roles. First, it is used
within templates for addressing into the document to extract data as
it is being transformed. Second, XPath syntax is used as a pattern
language in the matching rules for templates. Third, it is used to
perform simple math and string manipulations via built-in XPath
operators and functions.
XSLT 2.0 retains and strengthens this intimate connection with XPath
2.0 by drawing heavily on the new computational abilities of XPath
2.0. In fact, one can make a reasonable argument that the enhanced
capabilities of XSLT 2.0 stem largely from the advances in XPath 2.0.
The new XPath 2.0 facilities include sequences, regular expressions,
conditional and iterative expressions, and enhanced XML Schema
compliant-type system as well as a large number of new built-in
functions.
Each recipe in this chapter is a collection of mini-recipes for
solving certain classes of XPath problems that often arise while
using XSLT. We annotate each XPath expression with the XPath 2.0
commenting convention (: comment :) but users of
XPath/XSLT 1.0 should be aware that these comments are not legal
syntax. When we are showing the result of an XPath evaluation that is
empty, we will write ( ), which happens to be the
way one writes a literal empty sequence in XPath 2.0.
 |