Saxon.Api
Class Processor
-
public class Processor
- extends net.sf.saxon.Configuration.ApiProvider
The 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. Most
applications should only create one Processor
object. Once established, a
Processor
may be used in multiple threads.
Constructor Summary |
|
---|---|
Processor ()
Create a new SaxonCS |
|
Processor (bool licensedEdition)
Create a |
|
Processor (Stream configurationFile) Deprecated Use the Processor(Stream, Uri) constructor instead. |
|
Processor (Stream configurationFile, Uri baseUri)
Create a |
|
Processor (net.sf.saxon.Configuration config)
Create a |
Property Summary |
|
---|---|
CollectionFinder | CollectionFinder A used-supplied function that is used to retrieve a resource collection given a collection URI. |
string | Edition Get the Saxon product edition (for example, "EE" for Enterprise Edition) |
TextWriter | ErrorWriter
A |
net.sf.saxon.Configuration | Implementation
The underlying |
string | ProductTitle
Get the full name of the Saxon product version implemented by this |
string | ProductVersion Get the Saxon product version number (for example, "9.2.0.2") |
SchemaManager | SchemaManager
Gets the |
CollectionFinder | StandardCollectionFinder
The standard (built-in) collection finder that is used by default if no user-defined
collection finder has been supplied. This is exposed as a property of the |
decimal | XmlVersion
The XML version used in this |
Method Summary |
|
---|---|
void | DeclareCollation (Uri uri, CompareInfo compareInfo, CompareOptions options)
Create a collation based on a given |
string | GetMediaTypeForFileExtension (string extension) Get the media type to be associated with a file extension by the standard collection handler |
string | GetProperty (string name) Get the value of a configuration property |
object | GetProperty (Feature feature) Get a property of the configuration. |
XdmFunctionItem | GetSystemFunction (QName name, int arity) Get the system function with a given name and arity |
DocumentBuilder | NewDocumentBuilder ()
Create a new |
JsonBuilder | NewJsonBuilder ()
Create a new |
Serializer | NewSerializer ()
Create a |
Serializer | NewSerializer (TextWriter textWriter)
Create a |
Serializer | NewSerializer (Stream stream)
Create a |
XPathCompiler | NewXPathCompiler ()
Create a new |
XQueryCompiler | NewXQueryCompiler ()
Create a new |
XsltCompiler | NewXsltCompiler ()
Create a new |
XdmItemType | ParseItemType (string input)
Construct an |
XdmSequenceType | ParseSequenceType (string input) Construct an XdmSequenceType object by parsing a sequence type definition in XPath syntax |
void | RegisterCollection (Uri collectionUri, IEnumerable<IResource> collection) Register a specific collection URI |
void | RegisterExtensionFunction (ExtensionFunctionDefinition function)
Register an extension function with the |
void | RegisterExtensionFunction (QName name, XdmItemType type, Func 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 |
void | RegisterFileExtension (string extension, string mediaType) Set the media type to be associated with a file extension by the standard collection handler |
void | SetCatalogFiles (string[] fileNames) Set one or more catalog files to be used for resolving URIs |
void | SetProperty (string name, string value) Set a configuration property |
void | SetProperty (Feature feature, object value)
Set a configuration property. This method provides a type-safe way of
setting properties of any type: for example a boolean property can be
set by calling |
void | SetResourceResolver (ResourceResolver resolver, bool combine) Set a resource resolver to be used to resolve URIs referring to external resources. |
void | WriteXdmValue (XdmValue sequence, IDestination destination)
Copy an |
Constructor Detail
Processor
Create a new SaxonCS Processor
. This Processor
will have capabilities that depend on the version
of the software that has been loaded, and on the features that have been licensed.
Processor
Create a Processor
.
Parameters:
licensedEdition
- Must be set to true (kept for future use).Processor
Deprecated Use the Processor(Stream, Uri) constructor instead.
Create a Processor
, based on configuration information supplied in a configuration file.
Parameters:
configurationFile
- A stream holding the text of the XML configuration file. Details of the file format
can be found in the Saxon documentation.Processor
Create a Processor
, based on configuration information supplied in a configuration file.
Parameters:
configurationFile
- A stream holding the text of the XML configuration file. Details of the file format
can be found in the Saxon documentation.baseUri
- baseUri of the configuration file used for resolving any relative URIs in the fileThrows:
Processor
Create a Processor
, wrapping an existing instance of the internal Saxon class Configuration
This method can be used to create two Processor
objects that share the same underlying
Configuration
, though this is not usually advisable, because most changes to one Processor
actually modify the Configuration
and hence affect the other Processor
.
As an alternative to this method, consider using the Processor
that was originally used
to construct the Configuration
, which will often be available via Configuration.getProcessor()
.
Parameters:
config
- The Configuration
to be wrapped.Property Detail
CollectionFinder
A used-supplied function that is used to retrieve a resource collection given a collection URI.
If no collection finder is supplied, then the built-in collection finder is used.
The
built-in collection finder recognizes various kinds of collection including directory
collections
and catalog collections. A user-defined collection finder can delegate to the built-in
collection finder
by invoking the function available as Processor.StandardCollectionFinder
.
A collection finder should be set only while the processor is being initialized; the effect of changing the collection finder (or changing any data on which it depends) while queries or transformations are in progress is undefined.
The collection finder returns a set of IResource
objects. Typically a used-defined
class implementing IResource
is used. An IResource
has a resource URI, a content type
(MIME or media type), and a method to deliver the resource content as an XdmItem
. Typically
fetching the resource over the network, and parsing it according to the rules of the
relevant content
type, is delayed until the GetXdmItem
method is called.
For deterministic results, and for W3C conformance, it is recommended that the supplied function should be deterministic: repeated calls for the same collection URI should deliver the same set of resources. However, this requirement can lead to high memory requirements, so Saxon does not enforce it.
The CollectionFinder
registered with a processor is available to all queries and stylesheets
running under the control of that processor.
Edition
Get the Saxon product edition (for example, "EE" for Enterprise Edition)
ErrorWriter
A TextWriter
used as the destination of miscellaneous error, warning, and progress messages.
By default the Console.Error
is used for all such messages.
A user can supply their own TextWriter
to redirect error messages from the standard output.
Implementation
The underlying Configuration
object in the Saxon implementation
This property provides access to internal methods in the Saxon engine that are not specifically exposed in the SaxonCS API. In general these methods should be considered to be less stable than the classes in the Saxon.Api namespace.
The internal methods follow Java naming conventions rather than .NET conventions.
Information about the returned net.sf.saxon.Configuration object (and the objects it provides access to) is included in the Saxon JavaDoc documentation.
ProductTitle
Get the full name of the Saxon product version implemented by this Processor
ProductVersion
Get the Saxon product version number (for example, "9.2.0.2")
StandardCollectionFinder
The standard (built-in) collection finder that is used by default if no user-defined
collection finder has been supplied. This is exposed as a property of the Processor
so that it can be invoked by a user-written collection finder.
XmlVersion
The XML version used in this Processor
The value must be 1.0 or 1.1, as a decimal
. The default version is currently 1.0, but may
change in the future.
Method Detail
DeclareCollation
CompareInfo compareInfo,
CompareOptions options)
GetMediaTypeForFileExtension
Get the media type to be associated with a file extension by the standard collection handler
Parameters:
extension
- the file extension, for example "xml". The value "" gets
the default media type to be used for unregistered file extensions. The default
media type is also returned if the supplied file extension is not registeredReturns:
GetProperty
Get the value of a configuration property
This method provides the ability to get named properties of the configuration. The property names are supplied as strings, whose values can be found in the Java class net.sf.saxon.lib.FeatureKeys. The property values are always returned as strings. Properties whose values are other types are returned by converting the value to a string. Note that on/off properties are returned using the strings "true" and "false".
Method added in Saxon 9.1
Parameters:
name
- The property nameReturns:
GetProperty
Get a property of the configuration.
In earlier versions of SaxonCS this method attempted to achieve type-safety by returning a generic type. This has been abandoned - see bug 5183
Parameters:
feature
- the required property. Returns:
GetSystemFunction
int arity)
Get the system function with a given name and arity
Parameters:
name
- The required function namearity
- The required arityReturns:
NewDocumentBuilder
Create a new DocumentBuilder
, which may be used to build XDM documents from
a variety of XML-based sources.
Returns:
DocumentBuilder
NewJsonBuilder
Create a new JsonBuilder
, which may be used to build XDM instances from
input in JSON format.
Returns:
JsonBuilder
NewSerializer
Create a Serializer
initialized to write to a given TextWriter
.
Closing the writer after use is the responsibility of the caller.
Parameters:
textWriter
- The TextWriter
to which the Serializer
will writeReturns:
Serializer
NewSerializer
Create a Serializer
initialized to write to a given output Stream
.
Closing the output stream after use is the responsibility of the caller.
Parameters:
stream
- The output Stream
to which the Serializer
will writeReturns:
NewXPathCompiler
Create a new XPathCompiler
, which may be used to compile XPath expressions.
The returned XPathCompiler
retains a live link to the Processor
, and
may be affected by subsequent changes to the Processor
.
Returns:
XPathCompiler
NewXQueryCompiler
Create a new XQueryCompiler
, which may be used to compile XQuery queries.
The returned XQueryCompiler
retains a live link to the Processor
, and
may be affected by subsequent changes to the Processor
.
Returns:
XQueryCompiler
NewXsltCompiler
Create a new XsltCompiler
, which may be used to compile XSLT stylesheets.
The returned XsltCompiler
retains a live link to the Processor
, and
may be affected by subsequent changes to the Processor
.
Returns:
XsltCompiler
ParseItemType
throws
SaxonApiException
Construct an XdmItemType
object by parsing an item type definition in XPath syntax
Experimental XPath 4.0 syntax is accepted provided that the configuration feature XQUERY_VERSION is set to "4.0"
Parameters:
input
- The input string, in XPath syntax (for example array(xs:integer)
). The only
namespace prefix recognized is "xs", representing the XML Schema namespace.Throws:
ParseSequenceType
throws
SaxonApiException
Construct an XdmSequenceType object by parsing a sequence type definition in XPath syntax
Experimental XPath 4.0 syntax is accepted provided that the configuration feature XQUERY_VERSION is set to "4.0"
Parameters:
input
- The input string, in XPath syntax (for example array(xs:integer)*
). The only
namespace prefix recognized is "xs", representing the XML Schema namespace.Throws:
RegisterCollection
IEnumerable<IResource> collection)
Register a specific collection URI
Registered collections take priority over any a user-supplied CollectionFinder
Parameters:
collectionUri
- The collection URIcollection
- The contents of the collectionRegisterExtensionFunction
Register an extension function with the Processor
. This interface provides
rich capability for defining extension functions with complex requirements, for
example accessing information in the static and dynamic context, and declaring
the presence of side-effects. For simpler extension functions use an
ExtensionFunction
in preference.
Parameters:
function
-
An object that defines the extension function, including its name, arity, arguments
types, and
a reference to the class that implements the extension function call. This function
becomes available for use in all queries, stylesheets, and XPath expressions
compiled under the control of this Processor.
RegisterExtensionFunction
XdmItemType type,
Func 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
Parameters:
name
- The name of the function, as a QNametype
- The type of the function, for example ParseItemType("function(xs:double) as xs:double")
.
This must be a specific function type.function
- The body of the function, supplied typically as a lambda expression.
This interface provides only for extensions that have no side-effects and no
dependencies on the static or dynamic context. It does however allow the type signature
of the function to be defined.
RegisterFileExtension
Set the media type to be associated with a file extension by the standard collection handler
Parameters:
extension
- the file extension, for example "xml". The value "" sets the
default media type to be used for unregistered file extensionsmediaType
- the corresponding media type, for example "application/xml". The
choice of media type determines how a resource with this extension gets parsed, when
the file
appears as part of a collectionSetCatalogFiles
Set one or more catalog files to be used for resolving URIs
The call has no effect unless the configuration is using a resolver capable of using
catalogs.
It generally won't work if SetResourceResolver
has been called to set a different configuration-level
resolver. However you can call this method to set catalogs for use by the standard
resolver, and
then subsequently call SetResourceResolver
with combine=true
to combine a user-defined
resolver for specific URIs with a catalog-based resolver for others.
Parameters:
fileNames
- A list of filenames. (Often a single filename.)
The call has no effect if the list is empty.
Relative filenames are interpreted relative to the current working directory.SetProperty
Set a configuration property
This method provides the ability to set named properties of the configuration. The property names are set as strings, whose values can be found in the Java class net.sf.saxon.lib.FeatureKeys. The property values are always strings. Properties whose values are other types are not available via this interface: however all properties have an effective equivalent whose value is a string. Note that on/off properties are set using the strings "true" and "false".
Method added in Saxon 9.1
Parameters:
name
- The property namevalue
- The property valueSetProperty
Set a configuration property. This method provides a type-safe way of
setting properties of any type: for example a boolean property can be
set by calling SetProperty(Feature<bool>.ALLOW_SYNTAX_EXTENSIONS, true)
.
Parameters:
feature
- The property featurevalue
- The property valueSetResourceResolver
bool combine)
Set a resource resolver to be used to resolve URIs referring to external resources.
This resolver is used for all resources within the scope of the Processor
, unless
a more specific resolver is allocated for example at the level of an XsltCompiler
or XQueryEvaluator
.
If the resolver returns null, then "direct URI resolution" (using the native methods supported by the platform) is used as a fallback.
Parameters:
resolver
- The resource resolver to be usedcombine
- If true, then the existing resource resolver registered
at configuration level is used as a fallback when the new resource resolver returns
null.WriteXdmValue
IDestination destination)
Copy an XdmValue
to an XmlDestination
In principle this method can be used to copy any kind of XdmValue
to any kind
of XmlDestination
. However, some kinds of destination may not accept arbitrary
sequences of items; for example, some may reject function items. Some destinations
perform sequence normalization, as defined in the W3C serialization specification,
to convert the supplied sequence to a well-formed XML document; it is a property
of the chosen XmlDestination
whether it does this or not.
Parameters:
sequence
- The value to be writtendestination
- The destination to which the value should be written
Create a collation based on a given
CompareInfo
andCompareOptions
Parameters:
uri
- The collation URI to be used within an XPath expression to refer to this collationcompareInfo
- TheCompareInfo
, which determines the language-specific collation rules to be usedoptions
- Options to be used in performing comparisons, for example whether they are to be case-blind and/or accent-blind