Package net.sf.saxon.sxpath
Class XPathEvaluator
java.lang.Object
net.sf.saxon.sxpath.XPathEvaluator
This class provide a native Saxon API for free-standing evaluation of XPath expressions. Unlike the
JAXP API offered by
XPathEvaluator
it exposes Saxon classes and interfaces
and thus provides a more strongly-typed interface with greater control over the detailed behaviour.- Since:
- 8.4
- Author:
- Michael H. Kay
-
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.XPathEvaluator
(Configuration config) Construct an XPathEvaluator with a specified configuration. -
Method Summary
Modifier and TypeMethodDescriptionDeprecated.since 8.9.createExpression
(String expression) Prepare (compile) an XPath expression for subsequent evaluation.createPattern
(String pattern) Prepare (compile) an XSLT pattern for subsequent evaluation.declareVariable
(String uri, String localName) Declare a variable, making it available for use within a subsequently-compiled XPath expression.Get the Configuration in use.Get the executableGet the external namespace resolver, if one has been set usingsetNamespaceResolver(net.sf.saxon.om.NamespaceResolver)
Get the current static context.static void
For testing onlyvoid
Set the default namespace for elements and typesvoid
setNamespaceResolver
(NamespaceResolver namespaceResolver) Set the external namespace resolver to be used.void
setStaticContext
(XPathStaticContext context) Set the static context for compiling XPath expressions.void
setStripSpace
(boolean strip) Deprecated.since 8.9.
-
Constructor Details
-
XPathEvaluator
public XPathEvaluator()Default constructor. Creates an XPathEvaluator with a default configuration and name pool. Note that any source documents used by an XPath expression under this XPathEvaluator must be built using theConfiguration
that is implicitly created by this constructor, which is accessible using thegetConfiguration()
method. -
XPathEvaluator
Construct an XPathEvaluator with a specified configuration.- Parameters:
config
- the configuration to be used. If the XPathEvaluator is to be used to run schema-aware XPath expressions this must be an instance ofcom.saxonica.validate.SchemaAwareConfiguration
-
-
Method Details
-
getConfiguration
Get the Configuration in use.- Returns:
- the Saxon configuration
-
setStripSpace
public void setStripSpace(boolean strip) Deprecated.since 8.9. The preferred way to build a source document is to useConfiguration.buildDocument(javax.xml.transform.Source)
Indicate whether all whitespace text nodes in source documents are to be removed. This affects the action of thebuild(javax.xml.transform.Source)
method, and of all other methods that take a Source as input.- Parameters:
strip
- True if all whitespace text nodes are to be stripped from the source document, false otherwise. The default if the method is not called is false.
-
build
Deprecated.since 8.9. The preferred way to build a source document is to useConfiguration.buildDocument(javax.xml.transform.Source)
Build a source document.This method is retained for backwards compability. The preferred way to build a document tree is to call the method
Configuration.buildDocument(javax.xml.transform.Source)
- Parameters:
source
- a JAXP Source object. This may be any implementation of Source that Saxon recognizes: not only the standard kinds of source such as StreamSource, SAXSource, and DOMSource, but also for example a JDOM or XOM DocumentWrapper. For the way in which the source document is built, seeConfiguration.buildDocument(javax.xml.transform.Source)
- Returns:
- the NodeInfo representing the root of the constructed tree.
- Throws:
XPathException
- if, for example, XML parsing fails.
-
declareVariable
Declare a variable, making it available for use within a subsequently-compiled XPath expression. The variable may subsequently be assigned a value using the methodXPathDynamicContext.setVariable(XPathVariable, net.sf.saxon.om.ValueRepresentation)
. Any external variable used in an XPath expression must be declared before the XPath expression is compiled.- Parameters:
uri
- The namespace URI of the variable name. Use "" for the null namespace.localName
- The local part of the variable name.- Returns:
- an object representing the variable
-
setStaticContext
Set the static context for compiling XPath expressions. This provides more detailed control over the environment in which the expression is compiled, for example it allows namespace prefixes to be declared, variables to be bound and functions to be defined. For most purposes, the static context can be defined by providing and tailoring an instance of theIndependentContext
class. Until this method is called, a default static context is used, in which no namespaces are defined other than the standard ones (xml, xslt, and saxon), and no variables or functions (other than the core XPath functions) are available.- Parameters:
context
- the XPath static contextSetting a new static context clears any variables and namespaces that have previously been declared.
-
getStaticContext
Get the current static context. This will always return a value; if no static context has been supplied by the user, the system will have created its own. A system-created static context will always be an instance ofIndependentContext
- Returns:
- the static context object
-
getExecutable
Get the executable- Returns:
- the executable. This holds details of function bindings and collations.
-
createExpression
Prepare (compile) an XPath expression for subsequent evaluation.- Parameters:
expression
- The XPath expression to be compiled, supplied as a string.- Returns:
- an XPathExpression object representing the prepared expression
- Throws:
XPathException
- if the syntax of the expression is wrong, or if it references namespaces, variables, or functions that have not been declared.
-
createPattern
Prepare (compile) an XSLT pattern for subsequent evaluation. The result is an XPathExpression object representing a (pseudo-) expression that when evaluated returns a boolean result: true if the context node matches the pattern, false if it does not.- Parameters:
pattern
- the XSLT pattern to be compiled, supplied as a string- Returns:
- an XPathExpression object representing the pattern, wrapped as an expression
- Throws:
XPathException
- if the syntax of the expression is wrong, or if it references namespaces, variables, or functions that have not been declared.- Since:
- 9.1
-
setNamespaceResolver
Set the external namespace resolver to be used. The NamespaceResolver is stored as part of the static context. It overrides any namespaces declared directly using declareNamespace on the staticContext object- Parameters:
namespaceResolver
- The namespace resolver, which maintains a mapping of prefixes to URIs. Any namespace prefix used in the XPath expression is resolved using this namespaceResolver.
-
getNamespaceResolver
Get the external namespace resolver, if one has been set usingsetNamespaceResolver(net.sf.saxon.om.NamespaceResolver)
- Returns:
- the namespace resolver supplied by the user if set, or a system-defined namespace resolver
otherwise. By default, the
IndependentContext
object used as theXPathStaticContext
also acts as theNamespaceResolver
.
-
setDefaultElementNamespace
Set the default namespace for elements and types- Parameters:
uri
- The namespace to be used to qualify unprefixed element names and type names appearing in the XPath expression.
-
main
For testing only- Throws:
Exception
-