Selecting the XPath implementation
An application using the JAXP 1.3 XPath API starts by instantiating a factory class. This is done by calling:
XPathFactory xpathFactory = XPathFactory.newInstance(objectModel); XPath xpath = xpathFactory.newXPath();Here objectModel
is a URI that identifies the object model you are using. Saxon recognizes
the following values for the object model:
Symbolic name |
Meaning |
XPathConstants.DOM_OBJECT_MODEL |
The DOM object model |
NamespaceConstant.OBJECT_MODEL_SAXON |
Saxon's native object model.
This means anything that implements the |
NamespaceConstant.OBJECT_MODEL_JDOM |
The JDOM object model |
NamespaceConstant.OBJECT_MODEL_XOM |
The XOM object model |
NamespaceConstant.OBJECT_MODEL_DOM4J |
The DOM4J object model |
If you want to use Saxon as your XPath implementation, you must instantiate
the class net.sf.saxon.xpath.XPathFactoryImpl
directly.
If you want to take advantage of features
in Saxon-PE (Professional Edition), use com.saxonica.config.ProfessionalXPathFactory
, or for Saxon-EE
(Enterprise Edition) use com.saxonica.config.EnterpriseXPathFactory
.
It is important to note that a compiled XPath expression can only be used with a source document that was
built using the same Saxon Configuration
. When you create an
XPathFactory
, a Saxon Configuration
is created automatically. You can extract this configuration and use it to build source documents. Alternatively,
there is a constructor that allows you to create an XPathFactory
that uses a preexisting Configuration
.
Saxon's implementation of java.xml.xpath.XPath
is the class
net.sf.saxon.xpath.XPathEvaluator
. This class provides a few
simple configuration interfaces to set the source document, the static context, and the context node,
plus a number of methods for evaluating XPath expressions.
The XPath
object allows you to set the static context for
evaluating XPath expressions (you can pre-declare namespaces, variables, and functions), and to compile
XPath expressions in this context. A compiled XPath expression (an object of class XPathExpression
)
can then be evaluated, with a supplied node (represented by a class in the selected object model) supplied
as the context node. For further details, see the Javadoc specifications and the supplied example applications (as described
in The JAXP XPath API).