XPath is great. XPath-based languages like XQuery, XSLT, and XProc, are great. The
XPath
recommendation provides a foundation for writing expressions that evaluate the same
way in
a lot of processors, written in different languages, running in different environments,
in
XML databases, in in-memory processors, in servers or in clients.
Supporting so many different kinds of processor is wonderful thing. But this also
contrains which features are feasible at the XPath level and which are not. In the
years
since the release of XPath 2.0, experience has gradually revealed some missing features.
EXPath exists to provide specifications for such missing features in a collaborative-
and implementation-independent way. EXPath also provides facilities to help and deliver
implementations to as many processors as possible, via extensibility mechanisms from
the
XPath 2.0 Recommendation itself.
Other projects exist to define extensions for XPath-based languages or languages using
XPath, as the famous EXSLT, and the more recent
EXQuery and EXProc projects. We think that those projects are
really useful and fill a gap in the XML core technologies landscape. Nevertheless,
working
at the XPath level allows common solutions when there is no sense in reinventing the
wheel
over and over again. This is just following the brilliant idea of the W3C's XSLT and
XQuery
working groups, which joined forces to define XPath 2.0 together. EXPath purpose is
not to
compete with other projects, but collaborate with them.