Class Processor
Processor
class serves three purposes: it allows global Saxon configuration options to be set;
it acts as a factory for generating XQuery, XPath, and XSLT compilers; and it owns certain shared
resources such as the Saxon NamePool and compiled schemas. This is the first object that a
Saxon application should create. Once established, a Processor may be used in multiple threads.
It is possible to run more than one Saxon Processor concurrently, but only when running completely independent workloads. Nothing can be shared between Processor instances. Within a query or transformation, all source documents and schemas must be built using the same Processor, which must also be used to compile the query or stylesheet.
-
Constructor Summary
ConstructorsConstructorDescriptionProcessor
(boolean licensedEdition) Create a ProcessorCreate a Processor configured according to the settings in a supplied configuration file.Processor
(Configuration config) Create a Processor based on an existing Configuration. -
Method Summary
Modifier and TypeMethodDescriptionGet the value of a configuration propertyGet the user-visible Saxon product version, for example "9.0.0.1"Get the associated SchemaManager.Get the underlyingConfiguration
object that underpins this Processor.Get the version of XML used by this Processor.boolean
Test whether this processor is schema-awareCreate a DocumentBuilder.Create a SerializernewSerializer
(File file) Create a Serializer initialized to write to a given File.newSerializer
(OutputStream stream) Create a Serializer initialized to write to a given OutputStream.newSerializer
(Writer writer) Create a Serializer initialized to write to a given Writer.Create an XPathCompiler.Create an XQueryCompiler.Create an XsltCompiler.void
Register an extension function that is to be made available within any stylesheet, query, or XPath expression compiled under the control of this processor.void
registerExtensionFunction
(ExtensionFunction function) Register a simple external/extension function that is to be made available within any stylesheet, query, or XPath expression compiled under the control of this processor.void
setConfigurationProperty
(String name, Object value) Set a configuration propertyvoid
setXmlVersion
(String version) Set the version of XML used by this Processor.void
writeXdmValue
(XdmValue value, Destination destination) Write an XdmValue to a given destination.
-
Constructor Details
-
Processor
public Processor(boolean licensedEdition) Create a Processor- Parameters:
licensedEdition
- indicates whether the Processor requires features of Saxon that need a license file (that is, features not available in Saxon HE (Home Edition). If true, the method will create a Configuration appropriate to the version of the software that is running: for example, if running Saxon-EE, it will create an EnterpriseConfiguration. The method does not at this stage check that a license is available, and in the absence of a license, it should run successfully provided no features that require licensing are actually used. If the argument is set to false, a plain Home Edition Configuration is created unconditionally.
-
Processor
Create a Processor based on an existing Configuration. This constructor is useful for transition, when new components of an application are to use s9api interfaces but existing components use lower-level interfaces.- Parameters:
config
- the Configuration to be used by this processor- Since:
- 9.3
-
Processor
Create a Processor configured according to the settings in a supplied configuration file.- Parameters:
source
- the Source of the configuration file- Throws:
SaxonApiException
- if the configuration file cannot be read, or its contents are invalid- Since:
- 9.2
-
-
Method Details
-
newDocumentBuilder
Create a DocumentBuilder. A DocumentBuilder is used to load source XML documents.- Returns:
- a newly created DocumentBuilder
-
newXPathCompiler
Create an XPathCompiler. An XPathCompiler is used to compile XPath expressions.- Returns:
- a newly created XPathCompiler
-
newXsltCompiler
Create an XsltCompiler. An XsltCompiler is used to compile XSLT stylesheets.- Returns:
- a newly created XsltCompiler
- Throws:
UnsupportedOperationException
- if this version of the Saxon product does not support XSLT processing
-
newXQueryCompiler
Create an XQueryCompiler. An XQueryCompiler is used to compile XQuery queries.- Returns:
- a newly created XQueryCompiler
- Throws:
UnsupportedOperationException
- if this version of the Saxon product does not support XQuery processing
-
newSerializer
Create a Serializer- Returns:
- a new Serializer
- Since:
- 9.3
-
newSerializer
Create a Serializer initialized to write to a given OutputStream.Closing the output stream after use is the responsibility of the caller.
- Parameters:
stream
- The OutputStream to which the Serializer will write- Returns:
- a new Serializer
- Since:
- 9.3
-
newSerializer
Create a Serializer initialized to write to a given Writer.Closing the writer after use is the responsibility of the caller.
- Parameters:
writer
- The Writer to which the Serializer will write- Returns:
- a new Serializer
- Since:
- 9.3
-
newSerializer
Create a Serializer initialized to write to a given File.- Parameters:
file
- The File to which the Serializer will write- Returns:
- a new Serializer
- Since:
- 9.3
-
registerExtensionFunction
Register a simple external/extension function that is to be made available within any stylesheet, query, or XPath expression compiled under the control of this processor.This interface provides only for simple extension functions that have no side-effects and no dependencies on the static or dynamic context.
- Parameters:
function
- the implementation of the extension function.- Since:
- 9.4
-
registerExtensionFunction
Register an extension function that is to be made available within any stylesheet, query, or XPath expression compiled under the control of this processor. This method registers an extension function implemented as an instance ofExtensionFunctionDefinition
, using an arbitrary name and namespace.This interface allows extension functions that have dependencies on the static or dynamic context. It also allows an extension function to declare that it has side-effects, in which case calls to the function will be optimized less aggressively than usual, although the semantics are still to some degree unpredictable.
- Parameters:
function
- the implementation of the extension function.- Since:
- 9.2
-
getSchemaManager
Get the associated SchemaManager. The SchemaManager provides capabilities to load and cache XML schema definitions. There is exactly one SchemaManager in a schema-aware Processor, and none in a Processor that is not schema-aware. The SchemaManager is created automatically by the system.- Returns:
- the associated SchemaManager, or null if the Processor is not schema-aware.
-
isSchemaAware
public boolean isSchemaAware()Test whether this processor is schema-aware- Returns:
- true if this this processor is licensed for schema processing, false otherwise
-
getSaxonProductVersion
Get the user-visible Saxon product version, for example "9.0.0.1"- Returns:
- the Saxon product version, as a string
-
setXmlVersion
Set the version of XML used by this Processor. If the value is set to "1.0", then output documents will be serialized as XML 1.0. This option also affects the characters permitted to appear in queries and stylesheets, and the characters that can appear in names (for example, in path expressions).Note that source documents specifying xml version="1.0" or "1.1" are accepted regardless of this setting.
- Parameters:
version
- must be one of the strings "1.0" or "1.1"- Throws:
IllegalArgumentException
- if any string other than "1.0" or "1.1" is supplied
-
getXmlVersion
Get the version of XML used by this Processor. If the value is "1.0", then input documents must be XML 1.0 documents, and output documents will be serialized as XML 1.0. This option also affects the characters permitted to appear in queries and stylesheets, and the characters that can appear in names (for example, in path expressions).- Returns:
- one of the strings "1.0" or "1.1"
-
setConfigurationProperty
Set a configuration property- Parameters:
name
- the name of the option to be set. The names of the options available are listed as constants in classFeatureKeys
.value
- the value of the option to be set.- Throws:
IllegalArgumentException
- if the property name is not recognized
-
getConfigurationProperty
Get the value of a configuration property- Parameters:
name
- the name of the option required. The names of the properties available are listed as constants in classFeatureKeys
.- Returns:
- the value of the property, if one is set; or null if the property is unset and there is no default.
- Throws:
IllegalArgumentException
- if the property name is not recognized
-
getUnderlyingConfiguration
Get the underlyingConfiguration
object that underpins this Processor. This method provides an escape hatch to internal Saxon implementation objects that offer a finer and lower-level degree of control than the s9api classes and methods. Some of these classes and methods may change from release to release.- Returns:
- the underlying Configuration object
-
writeXdmValue
Write an XdmValue to a given destination. The sequence represented by the XdmValue is "normalized" as defined in the serialization specification (this is equivalent to constructing a document node in XSLT or XQuery with this sequence as the content expression), and the resulting document is then copied to the destination. If the destination is a serializer this has the effect of serializing the sequence as described in the W3C specifications.- Parameters:
value
- the value to be writtendestination
- the destination to which the value is to be written- Throws:
SaxonApiException
- if any failure occurs, for example a serialization error
-