|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.saxon.Configuration com.saxonica.config.ProfessionalConfiguration
public class ProfessionalConfiguration
This class holds details of user-selected configuration options for a set of transformations and/or queries. When running XSLT, the preferred way of setting configuration options is via the JAXP TransformerFactory interface, but the Configuration object provides a finer level of control. As yet there is no standard API for XQuery, so the only way of setting Configuration information is to use the methods on this class directly.
As well as holding configuration settings, this class acts as a factory for classes providing service in particular areas: error handling, URI resolution, and the like. Some of these services are chosen on the basis of the current platform (Java or .NET), some vary depending whether the environment is schema-aware or not.
The Configuration
provides access to a NamePool
which is used to manage
all the names used in stylesheets, queries, schemas, and source and documents: the NamePool
allocates integer codes to these names allowing efficient storage and comparison. Normally
there will be a one-to-one relationship between a NamePool
and a Configuration
.
It is possible, however, for several Configuration
objects to share the same
NamePool
. Until Saxon 8.9, by default all Configuration
objects
shared a single NamePool
unless configured otherwise; this changed in 8.9 so that
the default is to allocate a new NamePool
for each Configuration
.
The Configuration
establishes the scope within which node identity is managed.
Every document belongs to a Configuration
, and every node has a distinct identity
within that Configuration
. In consequence, it is not possible for any query or
transformation to manipulate multiple documents unless they all belong to the same
Configuration
.
Saxon-EE has a subclass of the Configuration
class which provides the additional
services needed for schema-aware processing. The EnterpriseConfiguration
also holds a cache of loaded schema components used for compiling schema-aware transformations
and queries, and for validating instance documents.
Since Saxon 8.4, the JavaDoc documentation for Saxon attempts to identify interfaces that are considered stable, and will only be changed in a backwards-incompatible way if there is an overriding reason to do so. These interfaces and methods are labelled with the JavaDoc "since" tag. The value 8.n indicates a method in this category that was introduced in Saxon version 8.n: or in the case of 8.4, that was present in Saxon 8.4 and possibly in earlier releases. (In some cases, these methods have been unchanged for a long time.) Methods without a "since" tag, although public, are provided for internal use or for use by advanced users, and are subject to change from one release to the next. The presence of a "since" tag on a class or interface indicates that there are one or more methods in the class that are considered stable; it does not mean that all methods are stable.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class net.sf.saxon.Configuration |
---|
Configuration.LicenseFeature |
Field Summary | |
---|---|
protected String[] |
externalModelNames
External object models supported in Saxon-PE and Saxon-EE |
protected String[] |
externalNodeClassNames
|
Fields inherited from class net.sf.saxon.Configuration |
---|
configurationClass, DO_NOT_RECOVER, JAVA_APPLICATION, optimizationLevel, optimizer, RECOVER_SILENTLY, RECOVER_WITH_WARNINGS, styleNodeFactory, vendorFunctionLibrary, XML_SCHEMA, XML10, XML11, XPATH, XQUERY, XSD10, XSD11, xsdVersion, XSLT |
Constructor Summary | |
---|---|
ProfessionalConfiguration()
Create a Saxon Professional Edition configuration object with default settings for all options. |
Method Summary | |
---|---|
void |
addExtensionBinders(FunctionLibraryList list)
Add the registered extension binders to a function library. |
Configuration |
copy()
Copy an existing Configuration to create a new Configuration. |
protected void |
copyTo(Configuration sc)
|
void |
declareBuiltInExtensionElementNamespaces()
Declare the built-in XSLT extension element namespaces |
void |
displayLicenseMessage()
Display a message about the license status. |
String |
getEditionCode()
Get the edition code identifying this configuration: "HE", "PE" or "EE" |
FunctionLibrary |
getExtensionBinder(String scheme)
Get the FunctionLibrary used to bind calls on extension functions on the specified platform. |
ExtensionElementFactory |
getExtensionElementFactory(String namespace)
Get the XSLT extension element factory for a given namespace |
protected String |
getFeature(String name)
This method is called to read a feature of the license. |
StyleNodeFactory |
getStyleNodeFactory()
Factory method to get the StyleNodeFactory, used for constructing elements in a stylesheet document |
VendorFunctionLibrary |
getVendorFunctionLibrary()
Get the FunctionLibrary used to bind calls on Saxon-defined extension functions |
boolean |
isLicensed()
Determine if the functionality available in this configuration is licensed. |
boolean |
isLicensedFeature(int feature)
Determine if a particular feature is licensed. |
boolean |
isSchemaAware(int language)
Deprecated. since 9.2: use isLicensedFeature() instead |
boolean |
isUnlicensed()
Ask if the configuration is known to be unlicensed |
Receiver |
makeEmitter(String clarkName,
Controller controller)
Get a configuration-defined output method. |
static Configuration |
makeProfessionalConfiguration(ClassLoader classLoader,
String className)
Static method to instantiate a professional configuration. |
UnconstructedDocument |
makeUnconstructedDocument(DocumentInstr instr,
XPathContext context)
Make an "unconstructed" (that is, lazily-constructed) document node |
UnconstructedElement |
makeUnconstructedElement(ElementCreator instr,
XPathContext context)
Make an "unconstructed" (that is, lazily-constructed) element node |
StaticQueryContext |
newStaticQueryContext()
Get a new StaticQueryContext (which is also the factory class for creating a query parser) |
UserFunction |
newUserFunction(boolean memoFunction)
Make a UserFunction object. |
Source |
resolveSource(Source source,
Configuration config)
Resolve a Source. |
void |
setExtensionBinder(String scheme,
FunctionLibrary binder)
Set the FunctionLibrary used to bind calls on extension functions. |
void |
setExtensionElementNamespace(String namespace,
String className)
Set a namespace used to refer to a library of XSLT extension elements |
void |
supplyLicenseKey(BufferedReader reader)
This method allows the contents of a license key to be supplied programmatically. |
protected boolean |
testFeature(int feature)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected String[] externalModelNames
protected String[] externalNodeClassNames
Constructor Detail |
---|
public ProfessionalConfiguration()
Method Detail |
---|
public static Configuration makeProfessionalConfiguration(ClassLoader classLoader, String className) throws RuntimeException
On the .NET platform, this method should not be called unless it is known that the assembly saxon9sa.dll has already been loaded. This can be achieved by an appropriate call on Assembly.Load(): for an example, see the C# Configuration.cs class in the Saxon.Api namespace.
This method fails if Saxon-EE cannot be loaded, but it does not fail if there is no license available. In that case it returns a schema-aware configuration object, but any attempt to use schema-aware processing will fail.
classLoader
- - the class loader to be used. If null, the context class loader for the current
thread is used.className
- - the name of the schema aware configuration class. Defaults to
"com.saxonica.EnterpriseConfiguration" if null is supplied. This allows an assembly
qualified name to be supplied under .NET. The class, once instantiated, must be an instance
of Configuration, but despite the name of this method there is nothing that requires it to
be schema-aware.
RuntimeException
- if the Saxon-EE product cannot be loadedpublic String getEditionCode()
getEditionCode
in class Configuration
public Configuration copy()
Note that creating a new ProfessionalConfiguration using this method can be significantly cheaper than creating one from scratch, because it avoids the need to verify the Saxon license key if this has already been done.
copy
in class Configuration
protected void copyTo(Configuration sc)
copyTo
in class Configuration
public void supplyLicenseKey(BufferedReader reader)
reader
- A reader that will be used to read the contents of the license file
(for example, a StringReader)
IllegalArgumentException
- if the key supplied is not a valid OEM license keyprotected String getFeature(String name)
name
- the name of the requested feature
RuntimeException
- if no license is availablepublic boolean isLicensed()
isLicensed
in class Configuration
public final boolean isLicensedFeature(int feature)
isLicensedFeature
in class Configuration
feature
- the feature in question, identified by a constant in class {#LicenseFeature}protected boolean testFeature(int feature)
public boolean isUnlicensed()
public final boolean isSchemaAware(int language)
isSchemaAware
in class Configuration
language
- the processing language for which schema-aware processing is required
public void displayLicenseMessage()
displayLicenseMessage
in class Configuration
public StyleNodeFactory getStyleNodeFactory()
getStyleNodeFactory
in class Configuration
public StaticQueryContext newStaticQueryContext()
newStaticQueryContext
in class Configuration
public void setExtensionBinder(String scheme, FunctionLibrary binder)
JavaExtensionLibrary
. It thus disables the function libraries
for built-in Saxon extensions and for EXSLT extensions. It is possible to create a
function library that adds to the existing mechanisms, rather than replacing them,
by supplying as the FunctionLibrary a FunctionLibraryList
that itself contains two FunctionLibrary objects: a JavaExtensionLibrary, and a user-written
FunctionLibrary.
scheme
- The scheme served by the extension binder. Typically this will be one
of "java" or "clitype". However, user-defined extension binders for other
schemes can be registered. Note that the scheme name does not have to be
related to the actual namespace used in function calls; all registered
function libraries have the opportunity to bind any extension function call.
The significance is purely local to this class: setting an extension binder
for a given scheme replaces the existing extension binder for that scheme.
The two schemes used by Saxon itself are "java" for dynamically-bound
Java extension functions, and "clitype" for dynamically-bound .NET extension
functionsbinder
- The FunctionLibrary object used to locate implementations of extension
functions, based on their name and aritypublic FunctionLibrary getExtensionBinder(String scheme)
scheme
- The URI scheme served by the extension binder. This will typically be one
of "java" or "clitype". On the Java platform, the only scheme currently supported is "java";
on the .NET platform, the "java" and "clitype" schemes coexist.
public void addExtensionBinders(FunctionLibraryList list)
addExtensionBinders
in class Configuration
public VendorFunctionLibrary getVendorFunctionLibrary()
getVendorFunctionLibrary
in class Configuration
public UserFunction newUserFunction(boolean memoFunction)
newUserFunction
in class Configuration
memoFunction
- true if the function is to be a memo function, This option is ignored
in Saxon-HE.public void declareBuiltInExtensionElementNamespaces()
public void setExtensionElementNamespace(String namespace, String className) throws XPathException
namespace
- the namespace used for the extension elementsclassName
- the classname of the implementation of the ExtensionElementFactory
that instantiates extension elements in this namespace
XPathException
public ExtensionElementFactory getExtensionElementFactory(String namespace)
namespace
- the namespace URI of the extension element
public Source resolveSource(Source source, Configuration config) throws XPathException
resolveSource
in interface SourceResolver
resolveSource
in class Configuration
source
- A source object, typically the source supplied as the first
argument to Transformer.transform(javax.xml.transform.Source, javax.xml.transform.Result)
or similar methods.config
- The Configuration. This provides the SourceResolver with access to
configuration information; it also allows the SourceResolver to invoke the
resolveSource() method on the Configuration object as a fallback implementation.
AugmentedSource
,
NodeInfo
,
or PullSource
. Return null if the Source object is not
recognized
XPathException
- if the Source object is recognized but cannot be processedpublic Receiver makeEmitter(String clarkName, Controller controller) throws XPathException
makeEmitter
in class Configuration
clarkName
- the QName of the user-supplied ContentHandler (requested as a prefixed
value of the method attribute in xsl:output, or anywhere that serialization parameters
are allowed), encoded in Clark format as {uri}localcontroller
- the Controller. Allows a local class loader to be used.
XPathException
public UnconstructedElement makeUnconstructedElement(ElementCreator instr, XPathContext context) throws XPathException
makeUnconstructedElement
in class Configuration
instr
- the instruction that creates the elementcontext
- the dynamic evaluation context
XPathException
public UnconstructedDocument makeUnconstructedDocument(DocumentInstr instr, XPathContext context) throws XPathException
makeUnconstructedDocument
in class Configuration
instr
- the instruction that creates the document nodecontext
- the dynamic evaluation context
XPathException
|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |