The Standalone XPath API

Because JAXP 1.3 is not available as a standard component of JDK 1.4, Saxon also provides a standalone XPath API of its own, with no dependencies on the JAXP 1.3 classes. This is available in the package net.sf.saxon.sxpath, which is included in the standard JAR file: saxon9.jar or saxon9sa.jar. It is a simpler API with less capability than the JAXP API, for example it does not allow XPath expressions to contain references to external variables or user-defined functions.

This interface consists essentially of two classes. The XPathEvaluator class can be used to establish a static context for compiling an XPath expression, and provides a method compileExpression that takes an XPath expression as a string, and returns an object of class XPathExpression. The XPathExpression object can then be evaluated using its evaluate() method. This method takes as an argument an object of class Source to represent the document against which the expression is evaluated. This can be a document that has already been parsed and built as a tree structure (represented, for example, by a DOMSource object or by a Saxon NodeInfo, or it can be an unparsed XML document supplied as a StreamSource or a SAXSource. The result of the expression is returned as a Java List, which may contain a mixture of nodes and atomic values. Nodes are represented using the class NodeInfo, unless the source used a different object model in which case they are returned using the node classes of that object model. Atomic values are represented using the appropriate Java class, for example Double, Boolean, or String.

Further details of these classes are available in the JavaDoc documentation.