Configuration Features

This page provides a complete list of the configuration features available.

The properties are identified by a symbolic name and a URI value defined in the Java module FeatureKeys. The table below gives summary information for each property.

Name
Command line option
Description

ALLOW_­EXTERNAL_­FUNCTIONS

-ext

http://saxon.sf.net/feature/allow-external-functions

ALLOW_EXTERNAL_FUNCTIONS determines whether calls to reflexive external functions are allowed. More specifically, if set to false it disallows all of the following:

  • Calls to reflexive Java extension functions
  • Use of the XSLT system-property() function to access Java system properties
  • Use of a relative URI in the xsl:result-document instruction
  • Calls to XSLT extension instructions

The default value is true. The setting false is recommended in an environment where untrusted stylesheets may be executed.

This option does not disable use of the doc() function or similar functions to access the filestore of the machine where the transformation or query is running. That should be done using a user-supplied URIResolver.

Note that integrated extension functions are trusted; calls to such functions are allowed even if this configuration option is false. In cases where an integrated extension function is used to load and execute untrusted code, it should check this configuration option before doing so.

ALLOW_MULTITHREADING

http://saxon.sf.net/feature/allow-multithreading

ALLOW_MULTITHREADING determines whether multi-threading is allowed.

If true (the default), the presence of the attribute saxon:threads="N" on an xsl:for-each instruction, when running under Saxon-EE, causes multi-threaded execution. If set to false, the value of the saxon:threads argument is ignored.

Setting the value to false also disables asynchronous processing of xsl:result-document instructions.

The default value is true if Saxon-EE is in use, false otherwise.

ALLOW_­OLD_­JAVA_­URI_­FORMAT

http://saxon.sf.net/feature/allow-old-java-uri-format

ALLOW_OLD_JAVA_URI_FORMAT determines whether extension function calls to dynamically-loaded Java extension functions may use the URI format supported in older Saxon releases.

If the value is false (the default), the only URI format accepted is (for example) "java:java.util.Date" - that is, a URI consisting of the string "java:" followed by the Java qualified class name of the class containing the implementation of the extension function.

If the value is true, then in addition to this format, the following are accepted: (a) the Java class name on its own ("java.util.Date"), and (b) any URI in which the Java class name follows the last "/" character (for example "http://my.com/extensions/java.util.Date"). This last format was originally provided for compatibility with xt and xalan, but it causes problems because it leads to unnecessary attempts to load spurious classes when the user did not intend the URI to represent a dynamically-loaded Java class.

ASSERTIONS_­CAN_­SEE_­COMMENTS

http://saxon.sf.net/feature/assertionsCanSeeComments

ASSERTIONS_CAN_SEE_COMMENTS determines whether comment and processing instructions in a document being validated are visible to assertions in an XSD 1.1 schema.

If the value is false (the default), comments and processing instructions are stripped from the view of the document that is made visible to the XPath expression that implements the assertion. If this creates adjacent text nodes, they are collapsed into a single text node.

If the value is true, then comments and processing instructions are visible to the XPath assertion.

COLLATION_­URI_­RESOLVER

http://saxon.sf.net/feature/collation-uri-resolver

The supplied CollationURIResolver is used to process any collation URIs found in the query or stylesheet, returning an object of class StringCollator that implements the requested collation.

COLLATION_­URI_­RESOLVER_­CLASS

http://saxon.sf.net/feature/collation-uri-resolver-class

The supplied class is instantiated and the resulting instance is used as the value of the FeatureKeys#COLLATION_URI_RESOLVER property.

COLLECTION_FINDER

http://saxon.sf.net/feature/collection-finder

The supplied CollectionFinder is used to retrieve a ResourceCollection object given by any URI defined in calls to the collection() or the uri-collection() function. If the argument is not specified then a default ResourceCollection should be handled. CollectionFinder returns a ResourceCollection which is used to map the URI of collection into a sequence of Resource objects (which are then resolved in the same way as URIs passed to the doc() function), or it may return an item (typically a node but can handle JSON documents).

COLLECTION_­FINDER_­CLASS

-cf

http://saxon.sf.net/feature/collection-finder-class

The supplied class is instantiated and the resulting instance is used as the value of the FeatureKeys#COLLECTION_FINDER property.

COLLECTION_­URI_­RESOLVER

http://saxon.sf.net/feature/collection-uri-resolver

The supplied CollectionURIResolver is used to process any URIs used in calls to the collection() function. The CollectionURIResolver may either return a sequence of URIs (which are then resolved in the same way as URIs passed to the doc() function), or it may return a sequence of (typically document) nodes.

COLLECTION_­URI_­RESOLVER_­CLASS

-cr

http://saxon.sf.net/feature/collection-uri-resolver-class

The supplied class is instantiated and the resulting instance is used as the value of the FeatureKeys#COLLECTION_URI_RESOLVER property.

COMPILE_WITH_TRACING

automatically set when -T is present

http://saxon.sf.net/feature/compile-with-tracing

If run-time tracing of stylesheet or query execution is required, then the code must be compiled with tracing enabled. Default is false. This option causes code to be compiled that makes calls to a TraceListener, but this has no effect unless a TraceListener is registered at execution time.

CONFIGURATION

http://saxon.sf.net/feature/configuration

This attribute cannot be set on the Configuration itself, but it can be set on various JAXP factory objects such as a TransformerFactory or DocumentBuilderFactory, to ensure that several such factories use the same Configuration. Note that other configuration options are held in the Configuration object, so setting this attribute will cancel all others that have been set. Also, if two factories share the same Configuration, then setting an attribute on one affects all the others.

CONFIGURATION_FILE

-config:filename

http://saxon.sf.net/feature/configuration-file

Defines a configuration file to be applied to the configuration. This attribute cannot be set on the Configuration itself, but it can be set on various JAXP factory objects such as a TransformerFactory or DocumentBuilderFactory. It is particularly useful when running transformations via the Ant xslt task, where it can be set as follows to define all configuration settings:

<factory name="net.sf.saxon.TransformerFactoryImpl"> <attribute name="http://saxon.sf.net/feature/configuration-file" value="c:/saxon/config.xml"/> </factory>

DEBUG_BYTE_CODE

http://saxon.sf.net/feature/debugByteCode

This option is set to indicate that bytecode generation should be run in debugging mode; it injects diagnostic tracing calls into the generated bytecode. This should be used only if requested by Saxonica support to diagnose a problem related to bytecode generation.

DEBUG_BYTE_CODE_DIR

http://saxon.sf.net/feature/debugByteCodeDir

This option is relevant only if DISPLAY_BYTE_CODE is set to true. It defines a directory to which files containing bytecode in human-readable form will be written. There will be one such file for each generated class, with a filename designed to give some kind of clue as to its relationship to the source code.

The default value is the directory saxonByteCode within the current working directory.

The named directory is created if it does not already exist.

Because the generation of class names involves random numbers, files will tend to accumulate in the supplied directory, even when the same source code is compiled repeatedly.

DEFAULT_COLLATION

http://saxon.sf.net/feature/defaultCollation

This option determines the collation that is used for comparing strings when no explicit collation is requested. It is not necessary for this collation to exist (or to have been registered) when setting this option; it only needs to exist by the time it is used.

In XSLT it is possible to override this setting using the [xsl:]default-collation attribute on any stylesheet element. In XQuery, it can be overridden using the declare default collation declaration in the query prolog, or via a setter method in class StaticQueryContext.

If no value is specified, the Unicode codepoint collation is used.

DEFAULT_COLLECTION

http://saxon.sf.net/feature/defaultCollection

This determines the collection that is used when the fn:collection() function is called with no arguments; the effect is the same as if it were called passing the URI that is the value of this configuration property.

DEFAULT_COUNTRY

http://saxon.sf.net/feature/defaultCountry

This determines the country that is used by format-date() and similar functions if no country code is supplied explicitly. If no value is given for this property, the default is taken from the Java Locale, which in turn typically depends on settings for the current user in the operating system.

DEFAULT_LANGUAGE

http://saxon.sf.net/feature/defaultLanguage

This option determines the language that is used by format-date(), xsl:number and similar constructs if no language code is supplied explicitly. If no value is given for this property, the default is taken from the Java Locale, which in turn typically depends on settings for the current user in the operating system.

DISPLAY_BYTE_CODE

http://saxon.sf.net/feature/displayByteCode

This option is set to indicate that bytecode generation should be run in display mode. The effect is to output files (one per class) containing a human-readable print of the generated bytecode. The files are placed in the directory identified by the DEBUG_BYTE_CODE_DIR option.

DTD_VALIDATION

-dtd:(on|off|recover)

http://saxon.sf.net/feature/validation

If true, the XML parser is requested to perform validation of source documents against their DTD. Default is false.

This option establishes a default for use whenever source documents (not stylesheets or schema documents) are parsed. The option can be overridden for individual documents by setting the ParseOptions for that individual document, for example from a URIResolver.

DTD_­VALIDATION_­RECOVERABLE

-dtd:(on|off|recover)

http://saxon.sf.net/feature/dtd-validation-recoverable

This option determines whether DTD validation failures should be treated as recoverable. If the option is set, a validation failure is reported as a warning rather than an error. The default is false.

This option establishes a default for use whenever source documents (not stylesheets or schema documents) are parsed. The option can be overridden for individual documents by setting the ParseOptions for that individual document, for example from a URIResolver.

EAGER_EVALUATION

http://saxon.sf.net/feature/eagerEvaluation

Forces Saxon to do eager evaluation of expressions in contexts where normally it would do lazy evaluation, for example when evaluating variables and function results. This can make for easier debugging.

Note that this only applies to situations where Saxon would normally save a Closure object as the result of an expression. It does not prevent Saxon from using pipelined evaluation of intermediate expressions using iterators.

ENTITY_­RESOLVER_­CLASS

http://saxon.sf.net/feature/entityResolverClass

The supplied class is instantiated and the resulting EntityResolver is used whenever Saxon itself creates an XMLReader for parsing source documents. It is not used with a user-supplied XMLReader.

The default value is StandardEntityResolver. This is an entity resolver that recognizes the names of many standard W3C DTDs and external entity files, and resolves them against local copies issued with the Saxon software, to avoid the need to fetch them from the web.

The property can be set to a zero-length string, in which case no EntityResolver will be used.

ENVIRONMENT_­VARIABLE_­RESOLVER

http://saxon.sf.net/feature/environmentVariableResolver

Setting the ENVIRONMENT_VARIABLE_RESOLVER causes the supplied object to be registered as the environment variable resolver for the Configuration. The setting is global: it affects all queries and transformations using this configuration.

The environment variable resolver is used when the XPath functions available-environment-variables() or environment-variable() are called. Saxon essentially delegates the evaluation of the function to the external resolver.

ENVIRONMENT_­VARIABLE_­RESOLVER_­CLASS

http://saxon.sf.net/feature/environmentVariableResolverClass

Setting ENVIRONMENT_VARIABLE_RESOLVER_CLASS causes an instance of the supplied class to be created, and registered as the environment variable resolver for the Configuration. The setting is global: it affects all queries and transformations using this configuration.

The environment variable resolver is used when the XPath functions available-environment-variables() or environment-variable() are called. Saxon essentially delegates the evaluation of the function to the external resolver.

ERROR_LISTENER_CLASS

http://saxon.sf.net/feature/errorListenerClass

ERROR_LISTENER_CLASS is the name of the class used to implement the JAXP ErrorListener. This is used both at compile time and at run-time. Currently if this option is specified, the class is instantiated, and the same instance is used for all processes running under this configuration. This may change in future so that a new instance is created for each compilation or evaluation.

Finer control can be obtained by setting the ErrorListener for a specific XSLT or XQuery compilation or evaluation.

EXPAND_­ATTRIBUTE_­DEFAULTS

-expand:(on|off)

http://saxon.sf.net/feature/expandAttributeDefaults

EXPAND_ATTRIBUTE_DEFAULTS determines whether fixed and default values defined in a schema or DTD will be expanded (both on input and on output documents, if validation is requested). By default (and for conformance with the specification) validation against a DTD or schema will cause default values defined in the schema or DTD to be inserted into the document. Setting this feature to false suppresses this behavior. In the case of DTD-defined defaults this only works if the XML parser reports whether each attribute was specified in the source or generated by expanding a default value. Not all XML parsers report this information.

EXPATH_­FILE_­DELETE_­TEMPORARY_­FILES

-expathFileDeleteTemporaryFiles:(on|off)

http://saxon.sf.net/feature/expathFileDeleteTemporaryFiles

EXPATH_FILE_DELETE_TEMPORARY_FILES determines whether temporary files and directories created in the EXPath File module should be automatically deleted on closure of the JVM.

The default value is false, to align with the standard. The setting false is recommended when external 'sweep-up' features aren't available.

GENERATE_BYTE_CODE

--generateByteCode:(on|off)

http://saxon.sf.net/feature/generateByteCode

By default, Saxon-EE attempts to generate Java bytecode for evaluation of parts of a query or stylesheet that are amenable to such treatment. Setting this option to false disables this.

IGNORE_­SAX_­SOURCE_­PARSER

http://saxon.sf.net/feature/ignoreSAXSourceParser

If this option is set to true, then when a SAXSource is supplied as the input to an XSLT transformation, Saxon will ignore the XMLReader supplied in the SAXSource (in fact, it will modify the supplied SAXSource setting the XMLReader to null) and use an XMLReader created using the value of the SOURCE_PARSER_CLASS option in preference.

The defining use case for this feature is when calling a Saxon transformation from Ant. Ant always supplies the source document as a SAXSource using a parser instantiated using the default JAXP mechanism. A different parser set using the property http://saxon.sf.net/feature/sourceParserClass will normally be ignored in this case; setting the ignoreSAXSourceParser option overrides this. This is especially useful if the input format is not in fact XML, but some other format converted to a SAX event stream by means of a custom parser.

IMPLICIT_­SCHEMA_­IMPORTS

http://saxon.sf.net/feature/implicitSchemaImports

IMPLICIT_SCHEMA_IMPORTS allows reference to schema components without an xs:import for the relevant namespace being present in the containing schema document.

This only works if the referenced components are already present among the schema components known to the configuration, perhaps because they were part of a different schema, or because there are cyclic references within a schema.

This option is not conformant with the XSD specification, which requires explicit xs:import declarations for all cross-namespace component references. However, some "industry-standard" schemas are known to violate this rule, and setting this option allows such schemas to be loaded by Saxon.

LAZY_­CONSTRUCTION_­MODE

http://saxon.sf.net/feature/lazyConstructionMode

LAZY_CONSTRUCTION_MODE determines whether temporary trees are constructed lazily. The default setting is false; there are a few situations (but not many) where setting this to true can give a performance benefit (especially a memory saving).

The option is most likely to be effective when executing XQuery in "pull" mode, that is, when the client calls the query processor to deliver the result as a stream of nodes, rather than running the query and piping the results into a serializer.

LICENSE_­FILE_­LOCATION

http://saxon.sf.net/feature/licenseFileLocation

LICENSE_FILE_LOCATION holds the filename in which the Saxon license file is held. This is the full file name, for example c:/saxon/license/license.lic. Setting this property causes Saxon to immediately read the specified file and register the license data, assuming it can be found at this location. The property is not recognized for reading, and it is not recognized for writing except in Saxon-PE and Saxon-EE.

LINE_NUMBERING

-l:(on|off)

http://saxon.sf.net/feature/linenumbering

Default is false. If true, line and column number information is retained for all source documents. This information is accessible using the saxon:line-number() and saxon:column-number() extension functions.

Note that the information is only as good as the XML parser supplies. SAX parsers generally report the position of an element node using the line and column number of the ">" character that forms the last character of the start tag.

When this option is set, location information attached to a node (system ID, line number, and column number) is retained when the node is copied. This has the side effect that the base URI of a node is also copied, which in some cases runs contrary to the XSLT or XQuery specification.

MARK_­DEFAULTED_­ATTRIBUTES

http://saxon.sf.net/feature/markDefaultedAttributes

Setting the MARK_DEFAULTED_ATTRIBUTES option causes Saxon to retain details of attributes that were notified by the XML parser as being defaulted (that is, the attribute was not present in the instance document but was defined by a default value in a DTD or schema). This information is available to applications via the saxon:is-defaulted() extension function.

Note: information about defaulted attributes is retained automatically where the attribute is processed using Saxon's schema processor; but in the case where the information comes from an external XML parser, it is retained only if this option is set.

MESSAGE_­EMITTER_­CLASS

-m:classname

http://saxon.sf.net/feature/messageEmitterClass

Use the specified Receiver to process the output from xsl:message. The class must implement the net.sf.saxon.event.Receiver interface. This interface is similar to a SAX ContentHandler, in that it takes a stream of events to generate output.

By default the standard XML emitter is used, configured to write to the standard error stream, and to include no XML declaration.

In general the content of a message is an XML fragment. Each message is output as a new document. The sequence of calls to this Receiver is as follows: there is a single open() call at the start of the transformation, and a single close() call at the end; and each evaluation of an xsl:message instruction starts with a startDocument() call and ends with endDocument().

The startDocument() event has a properties argument indicating whether terminate="yes" was specified, and the locationId on calls such as startElement() and characters() can be used to identify the location in the stylesheet where the message data originated (this is achieved by passing the supplied locationId in a call to getPipelineConfiguration().getLocator().getSystemId(locationId), or to getLineNumber() on the same object).

Select the class net.sf.saxon.event.MessageWarner to have xsl:message output notified to the JAXP ErrorListener, as described in the JAXP documentation.

MODULE_URI_RESOLVER

-mr:classname

http://saxon.sf.net/feature/moduleURIResolver

Affects XQuery only. An instance of a user-written class implementing Saxon's ModuleURIResolver interface. This is used to process any URIs used in import module directives in XQuery.

MODULE_­URI_­RESOLVER_­CLASS

-mr:classname

http://saxon.sf.net/feature/moduleURIResolverClass

Affects XQuery only. The name of a user-written class implementing Saxon's ModuleURIResolver interface. This is used to process any URIs used in import module directives in XQuery.

MULTIPLE_­SCHEMA_­IMPORTS

http://saxon.sf.net/feature/multipleSchemaImports

Affects schema construction (whether for standalone validation, or in the context of XSLT or XQuery). If set to true, the schema processor attempts to fetch a schema document appearing in an xs:import directive, whether or not a schema for that namespace has already been loaded, unless the absolute URI formed from the schemaLocation is the same as the absolute URI that was used to load that namespace. If set to false, the schema processor ignores the schemaLocation on an xs:import declaration if schema components for the requested namespace are already available. Note that setting the value to true might cause spurious errors due to like-named schema components being loaded more than once. On the other hand, setting the value to false might result in validation failing because schema components are missing.

Note: Both settings are conformant with the W3C recommendation, which leaves the details implementation-defined. It is possible (and advisable) to write schemas in such a way that this setting makes no difference, by ensuring that all imports for a particular namespace go via a "home" schema document for that namespace, where the home schema document contains xs:include declarations for all the schema documents defining components in that namespace.

NAME_POOL

http://saxon.sf.net/feature/namePool

Indicates that the supplied NamePool should be used as the target (run-time) NamePool by all stylesheets compiled (using newTemplates()) after this call on setAttribute. Normally a single system-allocated NamePool is used for all stylesheets compiled while the Java VM remains loaded; this attribute allows user control over the allocation of name pools. Note that source trees used as input to a transformation must be built using the same NamePool that is used when the stylesheet is compiled: this will happen automatically if the input to a transformation is supplied as a SAXSource or StreamSource but it is under user control if you build the source tree yourself.

This option can be used to make two Configuration objects share a NamePool even though they differ in other respects.

OCCURRENCE_LIMITS

-limits:min,max

http://saxon.sf.net/feature/occurrenceLimits

OCCURRENCE_LIMITS determines the largest values of minOccurs and maxOccurs that can be accommodated when compiling an "expanded" finite state machine to represent an XSD content model grammar. These limits do not apply in the common cases where the grammar can be implemented using a counting finite-state-machine, but in those cases where this is not possible, any minOccurs value greater than the first integer is reduced to the value of the first integer, and any maxOccurs value greater than the second integer is treated as "unbounded".

Setting these values too high may cause an OutOfMemoryException since the size of the finite state machine constructed by Saxon increases linearly with the values of minOccurs and maxOccurs.

OPTIMIZATION_LEVEL

-opt:integer

http://saxon.sf.net/feature/optimizationLevel

A string whose value is an integer in the range 0 (no optimization) to 10 (full optimization); currently all values other than 0 result in full optimization but this is likely to change in future. The default is full optimization; this feature allows optimization to be suppressed in cases where reducing compile time is important, or where optimization gets in the way of debugging, or causes extension functions with side-effects to behave unpredictably. (Note however, that even with no optimization, lazy evaluation may still cause the evaluation order to be not as expected.)

OUTPUT_URI_RESOLVER

http://saxon.sf.net/feature/outputURIResolver

The supplied OutputURIResolver will be used to resolve URIs of secondary result documents selected in the href attribute of the XSLT xsl:result-document instruction.

OUTPUT_­URI_­RESOLVER_­CLASS

-or:classname

http://saxon.sf.net/feature/outputURIResolverClass

The supplied class will be instantiated, and the resulting OutputURIResolver will be used to resolve URIs of secondary result documents selected in the href attribute of the XSLT xsl:result-document instruction.

PRE_­EVALUATE_­DOC_­FUNCTION

http://saxon.sf.net/feature/preEvaluateDocFunction

If true, calls on the doc() and document() functions, if their arguments are known at compile time, will be evaluated at compile time, and the resulting document will be stored as part of the Saxon Configuration and shared by all queries and transformations running within that Configuration. This is useful for reference documents that have stable content and are used by many different queries and transformations. The default is false, which means each query or transformation will reload the document from disk.

In XSLT 3.0 a better way of having external documents pre-loaded at stylesheet compile time is to use the new facility of static global variables.

PREFER_JAXP_PARSER

http://saxon.sf.net/feature/preferJaxpParser

This option has no effect on the Java platform. The default is true. When running on the .NET platform, if the option is true it causes the Apache Xerces parser (cross-compiled using IKVMC) to be used in preference to the .NET XML parser. If false the .NET XML parser (System.Xml.XmlTextReader) is used. One reason for providing this option is that the .NET XML parser does not report ID attributes, which means that the id() function does not work.

RECOGNIZE_­URI_­QUERY_­PARAMETERS

http://saxon.sf.net/feature/recognize-uri-query-parameters

True if the the standard URI resolver is to recognize query parameters included in the URI (for example, ?val=strict). Such parameters can then be used in URIs passed to the doc() or document() functions. For details of the query parameters available, see Source Documents. The default is false.

This option has no effect if a user-supplied URIResolver is in use, unless the user-supplied URIResolver chooses to inherit this functionality from the standard URIResolver.

Allowed parameters include validation=strict|lax|strip to perform schema validation, strip-space=yes|ignorable|no to control whitespace stripping, and xinclude=yes|no to control whether XInclude processing takes place (assuming the XML parser supports it).

RECOVERY_POLICY

-warnings:(silent|recover|fatal)

http://saxon.sf.net/feature/recoveryPolicy

An integer, one of Configuration#RECOVER_SILENTLY, Configuration#RECOVER_WITH_WARNINGS, or Configuration#DO_NOT_RECOVER. Indicates the policy for handling dynamic errors that the XSLT specification defines as recoverable. 0 means recover silently; 1 means recover after signalling a warning to the ErrorListener; 2 means treat the error as fatal. An example of a recoverable error is when two template rules match the same node.

Note that XSLT 3.0 has eliminated all "recoverable errors" from the specification.

RECOVERY_POLICY_NAME

-warnings:(silent|recover|fatal)

http://saxon.sf.net/feature/recoveryPolicyName

Indicates the policy for handling dynamic errors that the XSLT specification defines as recoverable. "recoverSilently" means recover silently; "recoverWithWarnings" means recover after signalling a warning to the ErrorListener; "doNotRecover" means treat the error as fatal. An example of a recoverable error is when two template rules match the same node.

Note that XSLT 3.0 has eliminated all "recoverable errors" from the specification.

RESULT_­DOCUMENT_­THREADS

http://saxon.sf.net/feature/resultDocumentThreads

Indicates the maximum number of threads to be used for processing xsl:result-document instructions in parallel. If the maximum number of threads are already in use, the xsl:result-document instruction will be executed synchronously within its parent thread.

The default value is initialized to Runtime.getRuntime().availableProcessors() which is intended to represent the number of "processors" (under some definition) available from the hardware.

The limit applies per Configuration. If multiple workloads are running on the same server under separate Saxon Configuration objects, then it may be desirable to lower the limit.

Setting a value of zero or one suppresses multithreading entirely. This can also be achieved (for a specific xsl:result-document instruction) by setting the attribute saxon:asynchronous="no" in the stylesheet. Suppressing multithreading may be desirable in a stylesheet that calls extension functions with side-effects.

RETAIN_­DTD_­ATTRIBUTE_­TYPES

http://saxon.sf.net/feature/retain-dtd-attribute-types

If set to true, indicates that when input is obtained from a SAX parser, the DTD-based attribute type notified by the XML parser should be used to set the type annotation of the resulting node: for example a DTD type of NMTOKENS results in a type annotation of xs:NMTOKENS.

This option is retained for backwards compatibility (at some time in the past, it was the default), but is deprecated.

SCHEMA_URI_RESOLVER

http://saxon.sf.net/feature/schemaURIResolver

The supplied SchemaURIResolver will be used to resolve URIs of schema documents referenced in xsl:import-schema declarations in XSLT, import schema in XQuery, references from one schema document to another using xs:include or xs:import, and references from an instance document to a schema using xsi:schemaLocation.

SCHEMA_­URI_­RESOLVER_­CLASS

http://saxon.sf.net/feature/schemaURIResolverClass

The name of a class that implements the interface SchemaURIResolver; this class will be instantiated and the resulting instance will be used as the value of the FeatureKeys#SCHEMA_URI_RESOLVER property.

SCHEMA_VALIDATION

-val:(strict|lax|strip|preserve)

http://saxon.sf.net/feature/schema-validation

Indicates whether and how schema validation should be applied to source documents.

SCHEMA_­VALIDATION_­MODE

-val:(strict|lax|strip|preserve)

http://saxon.sf.net/feature/schema-validation-mode

Indicates whether and how schema validation should be applied to source documents.

SERIALIZER_­FACTORY_­CLASS

http://saxon.sf.net/feature/serializerFactoryClass

The class will be instantiated and the resulting SerializerFactory will be used to create the serialization pipeline for XSLT and XQuery results. By subclassing the standard SerializerFactory it is possible to customize many aspects of the output produced by the Serializer, or to introduce new serialization methods and parameters.

SOURCE_PARSER_CLASS

-x:classname

http://saxon.sf.net/feature/sourceParserClass

The class will be instantiated. If it is an XMLReader it is used directly; if it is a SAXParserFactory it is used to instantiate an XMLReader. The resulting XMLReader will be used to parse source documents (that is, the principal source document plus any secondary source documents read using the doc(), document(), or collection() function).

Note that the selected parser is used only when the input is supplied in the form of a StreamSource; it is ignored when a SAXSource with a pre-initialized XMLReader is supplied. A consequence is that this configuration option has no effect when running transformations from an Ant script, since the Ant xslt task always supplies the input in the form of a SAXSource.

SOURCE_­RESOLVER_­CLASS

http://saxon.sf.net/feature/sourceResolverClass

On interfaces that allow an org.xml.sax.Source to be supplied, if a kind of Source is provided that Saxon does not recognize, it will be passed to the user-supplied SourceResolver, which has the opportunity to convert it to a kind of Source that Saxon does recognize. This allows new kinds of input to be supplied as input to Saxon's query, transformation, and validation engines.

STABLE_­COLLECTION_­URI

http://saxon.sf.net/feature/stableCollectionUri

STABLE_COLLECTION_URI, if set, indicates that collections returned by the fn:collection() and fn:uri-collection() functions should be stable, that is, repeated calls on these functions with the same collection URI (within the scope of a single query or transformation) should return identical results.

Setting this option may be expensive because it requires that the entire collection be saved in memory; it is rarely necessary in practice, but is required for strict conformance with the W3C specifications.

It is also possible to indicate that a collection is stable by means of the CollectionFinder API.

STANDARD_­ERROR_­OUTPUT_­FILE

http://saxon.sf.net/feature/standardErrorOutputFile

STANDARD_ERROR_OUTPUT_FILE is the name of a file to which Saxon will redirect output that would otherwise go to the operating system standard error stream (System.err). This is the fallback destination for various tracing and diagnostic output. In some cases a more specific mechanism exists to select the destination for particular kinds of output.

Note that if the Configuration is used in more than one processing thread, the messages from different threads will be interleaved in the output file. A more selective approach is to use a different ErrorListener in different processing threads, and arrange for each ErrorListener to write to its own logging destination.

STREAMABILITY

http://saxon.sf.net/feature/streamability

STREAMABILITY determines the test that Saxon applies to determine whether a construct is streamable, in cases where streaming is requested for example by use of the xsl:stream instruction, or by specifying streamable="yes" on constructs such as xsl:mode and xsl:accumulator.

The value "standard" means that Saxon applies the rules in the W3C XSLT 3.0 specification as closely as possible. (Exact compliance is not always possible.)

The value "extended" means that use of Saxon streaming extensions is permitted. This is the default when using Saxon-EE with a suitable license.

The value "off" means that all constructs are treated as non-streamable. This is the only option available when using a Saxon version or license that does not enable streaming.

Whichever option is chosen, the STREAMING_FALLBACK option can be used to control what happens when code is deemed non-streamable; it provides a choice between throwing a static (compile-time) error, and falling back to a non-streaming implementation.

STREAMING_FALLBACK

http://saxon.sf.net/feature/streamingFallback

If the STREAMING_FALLBACK option is set, then constructs for which streaming is requested (such as templates in a streaming mode, the xsl:stream instruction, and streamable accumulators) will be executed in non-streaming mode if the code is not actually streamable. A compile-time warning will always be given when the fallback option is taken.

STRIP_WHITESPACE

-strip:(all|none|ignorable)

http://saxon.sf.net/feature/strip-whitespace

Indicates whether all whitespace, no whitespace, or whitespace in elements defined in a DTD or schema as having element-only content should be stripped from source documents. The default is "ignorable". This whitespace stripping is additional to any stripping done as a result of the xsl:strip-space declaration in an XSLT stylesheet.

STYLE_PARSER_CLASS

-y:classname

http://saxon.sf.net/feature/styleParserClass

The class will be instantiated. If it is an XMLReader it is used directly; if it is a SAXParserFactory it is used to instantiate an XMLReader. The resulting XMLReader will be used to parse stylesheet documents (that is, the principal stylesheet module plus any secondary source documents read using xsl:include or xsl:import) and also schema documents.

SUPPRESS_­EVALUATION_­EXPIRY_­WARNING

http://saxon.sf.net/feature/suppressEvaluationExpiryWarning

This is set to true to suppress the warning otherwise issued by command-line interfaces indicating that an evaluation license is in use and is due to expire in a set number of days.

SUPPRESS_­XSLT_­NAMESPACE_­CHECK

http://saxon.sf.net/feature/suppressXsltNamespaceCheck

This is set to true to suppress the warning when there is no commonality between the namespaces used in stylesheet match patterns and the namespaces used in the source document.

TIMING

-t

http://saxon.sf.net/feature/timing

This is set to true to cause basic timing and tracing information to be output to the standard error output stream. The name of the feature is poorly chosen, since much of the information that is output has nothing to do with timing, for example the names of output files for xsl:result-document are traced, as are the names of schema documents loaded.

TRACE_­EXTERNAL_­FUNCTIONS

-TJ

http://saxon.sf.net/feature/trace-external-functions

If this option is set, Saxon will output (to the standard error output) progress information about its attempts to locate and disambiguate references to reflexive Java extension functions. This is useful for diagnostics if the XQuery or XSLT compiler is failing to locate user-written extension functions.

TRACE_LISTENER

-TL:classname

http://saxon.sf.net/feature/traceListener

The TraceListener will be notified of significant events occurring during a query or transformation, for tracing or debugging purposes.

Setting a TraceListener automatically sets the FeatureKeys#COMPILE_WITH_TRACING option.

Avoid this option if more than one transformation or query is running concurrently: use the feature FeatureKeys#TRACE_LISTENER_CLASS instead. Alternatively, it is possible to set a TraceListener for an individual query or transformation.

TRACE_LISTENER_CLASS

-TL:classname

http://saxon.sf.net/feature/traceListenerClass

The class will be instantiated once for each query or transformation, and the resulting TraceListener will be notified of significant events occurring during that query or transformation, for tracing or debugging purposes.

Setting a TraceListener automatically sets the FeatureKeys#COMPILE_WITH_TRACING option.

TRACE_­OPTIMIZER_­DECISIONS

-explain

http://saxon.sf.net/feature/trace-optimizer-decisions

If this option is set, Saxon will output (to the standard error output) detailed information about the rewrites to the expression tree made by the optimizer. This information is mainly useful for internal system debugging, but it is also possible to digest it to analyze the ways in which the expression has been optimized for the purpose of performance analysis and tuning.

TREE_MODEL

-tree:(linked|tiny|tinyc)

http://saxon.sf.net/feature/treeModel

Selects an implementation of the Saxon tree model. The default is TINY_TREE.

For running XQuery Update, use the linked tree, because it is the only implementation that is updateable.

TREE_MODEL_NAME

-tree:(linked|tiny|tinyc)

http://saxon.sf.net/feature/treeModelName

Selects an implementation of the Saxon tree model. The default is tinyTree.

For running XQuery Update, use the linked tree, because it is the only implementation that is updateable.

URI_RESOLVER_CLASS

-r:classname

http://saxon.sf.net/feature/uriResolverClass

An instance of the specified URIResolver class will be created, and used to resolve (dereference) all URIs specifed in calls to the doc() and document() functions, as well as URIs used in xsl:include and xsl:import and location hints for XQuery modules and XSD schema documents.

USE_­PI_­DISABLE_­OUTPUT_­ESCAPING

http://saxon.sf.net/feature/use-pi-disable-output-escaping

This option determines whether a TransformerHandler created with this TransformerFactory or Configuration recognizes the JAXP-defined processing instructions Result.PI_DISABLE_OUTPUT_ESCAPING and Result.PI_ENABLE_OUTPUT_ESCAPING in the input stream as instructions to disable or to re-enable output escaping. The default value is false.

USE_­TYPED_­VALUE_­CACHE

http://saxon.sf.net/feature/use-typed-value-cache

This option is relevant only when the TinyTree is used; it determines whether (for a validated document) a cache will be maintained containing the typed values of nodes. Typed values are held in the cache only for elements and attributes whose type is other than string, untypedAtomic, or anyURI. The default value is true. Setting this value to false can reduce memory requirements at the cost of requiring recomputation of typed values on each access.

USE_­XSI_­SCHEMA_­LOCATION

-xsiloc:(on|off)

http://saxon.sf.net/feature/useXsiSchemaLocation

This option determines whether or not to use the xsi:schemaLocation and xsi:noNamespaceSchemaLocation attributes in an instance document to locate a schema for validation.

Note, these attribute are only consulted if validation is requested; the presence of one of these attributes never by itself triggers validation.

VALIDATION_COMMENTS

-outval:recover

http://saxon.sf.net/feature/validation-comments

This option determines whether non-fatal validation errors in XQuery or XSLT result documents should result in comments being inserted into the result tree. The command-line flag -outval:recover sets both this option and the FeatureKeys#VALIDATION_WARNINGS option.

VALIDATION_WARNINGS

-outval:recover

http://saxon.sf.net/feature/validation-warnings

This option indicates (if true) that errors occuring while validating a final result tree are not to be treated as fatal.

Regardless of the setting of this option, all validation errors are reported to the error() method of the ErrorListener, and validation is terminated if the error() method throws an exception, or if the error limit set in the ParseOptions object is reached.

This option primarily controls what happens at the end of a validation episode. If the validation episode detected one or more validation errors, then when this option is off, an exception is thrown, which will normally result in any query or stylesheet failing with a dynamic error, and no output file being written. If the option is on, no exception is thrown, and the output is written as if validation had been successful. Note in this case that any type annotations present in a result document are unreliable.

If this option is set when running XSLT or XQuery, it is ignored as far as input files are concerned: validation errors in input files are still fatal. However, if the option is set and a validation error occurs in a final output file, the output file is still written and the process terminates as if successful.

The detailed interpretation of this option changed in Saxon 9.5.

VERSION_WARNING

-versmsg:(on|off)

http://saxon.sf.net/feature/version-warning

Indicates whether a warning message should be notified (to the ErrorListener) if running Saxon against an XSLT stylesheet that specifies version="1.0". The warning that an XSLT 1.0 stylesheet is being processed using an XSLT 2.0 processor is output by default (because the W3C specification requires it), but it may be suppressed using this option.

XINCLUDE

-xi:(on|off)

http://saxon.sf.net/feature/xinclude-aware

Indicates whether source documents should have any XInclude directives expanded. The default is false. The option applies to all input XML documents, including stylesheets and schema documents. It can be overridden for individual documents using the ParseOptions class.

This option relies on support in the underlying XML parser. If the XML parser does not support XInclude processing, the option is ignored.

XML_VERSION

-xmlversion:(1.0|1.1)

http://saxon.sf.net/feature/xml-version

This determines the XML version used by the Configuration.

Note that source documents specifying xml version="1.0" or "1.1" are accepted regardless of this setting. The effect of this switch is to change the validation rules for types such as xs:Name and xs:NCName, to change the characters allowed in names within XPath expressions (etc.), to change the meaning of \i and \c in regular expressions, and to determine whether the serializer allows XML 1.1 documents to be constructed.

The default is currently 1.0, but may change.

XML_PARSER_FEATURE

http://saxon.sf.net/feature/parserFeature?uri=

Sets the value of a parser feature flag. The feature name is any fully-qualified URI.

For example if the parser supports a feature http://xml.org/sax/features/external-parameter-entities then this can be set by setting the value of the Configuration property: http://saxon.sf.net/feature/parserFeature?uri=http%3A//xml.org/sax/features/external-parameter-entities to true.

XML_PARSER_PROPERTY

http://saxon.sf.net/feature/parserProperty?uri=

Sets the value of a parser property flag. The property name is any fully-qualified URI.

For example if the parser supports a property http://apache.org/xml/properties/schema/external-schemaLocation then this can be set using the value of the Configuration property: http://saxon.sf.net/feature/parserProperty?uri=http%3A//apache.org/xml/properties/schema/external-schemaLocation to the required value.

XQUERY_ALLOW_UPDATE

-update:(on|off|discard)

http://saxon.sf.net/feature/xqueryAllowUpdate

Determines whether XQuery Update syntax is accepted. If true, update syntax is accepted, if false, it is not accepted. Setting the value to true does not mean that the query has to use update syntax, only that it may do so.

From Saxon 9.6, XQuery Update syntax and XQuery 3.0 syntax can be mixed, although this combination is not defined by any W3C specification at the time of writing.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

On the command line, this option is combined with the option "discard" which indicates that updates are allowed, but the updates are not written back to filestore. This does not correspond to any option in the Java API, where writing an updated document back to filestore only happens if explicitly requested.

XQUERY_­CONSTRUCTION_­MODE

http://saxon.sf.net/feature/xqueryConstructionMode

This option defines the default value of the construction mode in the XQuery static context (overridable in the query prolog).

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­DEFAULT_­ELEMENT_­NAMESPACE

http://saxon.sf.net/feature/xqueryDefaultElementNamespace

This property defines the default namespace for elements and types that are not qualified by a namespace prefix.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­DEFAULT_­FUNCTION_­NAMESPACE

http://saxon.sf.net/feature/xqueryDefaultFunctionNamespace

This property defines the default namespace for function names that are not qualified by a namespace prefix.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_EMPTY_LEAST

http://saxon.sf.net/feature/xqueryEmptyLeast

This property defines how the empty sequence is handled in XQuery sorting (the "order by" clause). If true, () comes at the start of the sorted sequence; if false, it comes last.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­INHERIT_­NAMESPACES

http://saxon.sf.net/feature/xqueryInheritNamespaces

This property defines the default value of the inherit-namespaces property in the XQuery static context.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­MULTIPLE_­MODULE_­IMPORTS

http://saxon.sf.net/feature/xqueryMultipleModuleImports

If the value is false, then when an import module declaration is encountered for a module URI that is already among the known loaded modules (or modules in the process of being compiled), the import module is treated as a reference to the existing module. If the value is true, the system first checks whether the supplied "location hints" match the known location of the existing module, and the existing module is used only if there is a match.

XQUERY_­PRESERVE_­BOUNDARY_­SPACE

http://saxon.sf.net/feature/xqueryPreserveBoundarySpace

This property defines whether "boundary space" (insignificant space in direct element constructors) should be retained or not.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­PRESERVE_­NAMESPACES

http://saxon.sf.net/feature/xqueryPreserveNamespaces

This property defines whether unused namespace declarations are retained by XQuery element copy operations.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­REQUIRED_­CONTEXT_­ITEM_­TYPE

http://saxon.sf.net/feature/xqueryRequiredContextItemType

This property defines the default expected context item type for a query.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_SCHEMA_AWARE

http://saxon.sf.net/feature/xquerySchemaAware

A query will automatically be schema-aware if it contains an import schema declaration. This property allows a query to be marked as schema-aware even if it contains no import schema declaration. It is necessary for a query to be compiled as schema-aware if it is to handle typed (validated) input documents in which nodes have type annotations based on their schema-defined type.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

XQUERY_­STATIC_­ERROR_­LISTENER_­CLASS

http://saxon.sf.net/feature/xqueryStaticErrorListenerClass

The specified class is instantiated to create an ErrorListener, and all reports of static errors in a query will go to this ErrorListener.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

In the absence of this property, the global ErrorListener specified as the value of the FeatureKeys#ERROR_LISTENER_CLASS property is used.

XQUERY_VERSION

http://saxon.sf.net/feature/xqueryVersion

This property determines the version of XQuery used by the Configuration. In order to use XQuery 3.0, it is necessary both to set the XQuery compiler to process XQuery 3.0, and to specify XQuery 3.0 in the query prolog of each module that uses XQuery 3.0 features.

This option can be set for a particular XQuery compilation. When the option is set at the Configuration level, it acts as a default.

Note that XQuery 3.0 features cannot be used with XQuery Update.

XQuery 3.0 is supported only in Saxon-EE.

XSD_VERSION

http://saxon.sf.net/feature/xsd-version

This property determines the version of XML Schema used by the Configuration. The default is XSD 1.0. If XSD 1.0 is selected, XSD 1.1 features will be rejected, with the exception of the version control attributes that allow sections of the schema to be marked as requiring XSD 1.0 or XSD 1.1.

XSLT_­ENABLE_­ASSERTIONS

-ea

http://saxon.sf.net/feature/enableAssertions

This property indicates whether assertions (XSLT 3.0 xsl:assert instructions) are enabled or disabled. They are disabled by default. Setting this property on causes assertions to be enabled at compile time for all XSLT packages compiled using the default configuration options.

This option can be set for a particular XSLT compilation. When the option is set at the Configuration level (or on a TransformerFactory), it acts as a default.

If assertions have been enabled at compile time for a particular package, they can still be disabled at run-time (for all packages) by setting an option on the Xslt30Transformer. But if assertions were disabled at compile time, enabling them at run-time has no effect.

XSLT_INITIAL_MODE

-im:mode-name

http://saxon.sf.net/feature/initialMode

This property indicates the name of a mode within a stylesheet in which execution (using template rules) should begin.

This option can be set for a particular XSLT transformation. When the option is set at the Configuration (or on a TransformerFactory), it acts as a default.

XSLT_­INITIAL_­TEMPLATE

-it:template-name

http://saxon.sf.net/feature/initialTemplate

This property indicates the name of a named template within a stylesheet where execution should begin.

This option can be set for a particular XSLT transformation. When the option is set at the Configuration level (or on a TransformerFactory), it acts as a default.

XSLT_SCHEMA_AWARE

http://saxon.sf.net/feature/xsltSchemaAware

This property indicates whether stylesheets should be compiled with the ability to handle schema-typed input documents. By default a stylesheet is compiled to handle such input if it contains an xsl:import-schema instruction, and not otherwise. It is necessary for a stylesheet to be compiled as schema-aware if it is to handle typed (validated) input documents in which nodes have type annotations based on their schema-defined type.

This option can be set for a particular XSLT compilation. When the option is set at the Configuration level (or on a TransformerFactory), it acts as a default.

XSLT_­STATIC_­ERROR_­LISTENER_­CLASS

http://saxon.sf.net/feature/stylesheetErrorListener

The specified class is instantiated to create an ErrorListener, and all reports of static errors in a stylesheet will go to this ErrorListener.

This option can be set for a particular XSLT compilation. When the option is set at the Configuration level (or on a TransformerFactory), it acts as a default.

In the absence of this property, the global ErrorListener specified as the value of the FeatureKeys#ERROR_LISTENER_CLASS property is used.

XSLT_­STATIC_­URI_­RESOLVER_­CLASS

-r:classname

http://saxon.sf.net/feature/stylesheetURIResolver

This property defines a URIResolver used when dereferencing the URIs that appear in the href attributes of the xsl:include and xsl:import declarations. Note that this defaults to the setting of the global URI_RESOLVER property.

This option can be set for a particular XSLT compilation. When the option is set at the Configuration level (or on a TransformerFactory), it acts as a default.

In the absence of this property, the global URIResolver specified as the value of the FeatureKeys#URI_RESOLVER_CLASS property is used.

XSLT_VERSION

-xsltversion:(2.0|3.0)

http://saxon.sf.net/feature/xsltVersion

This property determines the version of XSLT to be supported by default.

XSLT 3.0 is supported only in Saxon-EE. If no value is specified for the property, an XSLT 2.0 or XSLT 3.0 processor is used depending on the value of the version attribute of the xsl:stylesheet element.