Saxonica: Saxon Product/Feature Matrix

Saxon 9.8 product comparison (Feature Matrix)

For features in version 9.7 products, see the Saxon 9.7 Feature Matrix.

For features in version 9.6 products, see the Saxon 9.6 Feature Matrix.

The table below lists product features and indicates which features are present in which product package.

Language Support HE PE EE EE-T EE-Q EE-V JS
XSLT 3.0 (Basic)

XSLT 3.0 (Basic)

Provides all features from the XSLT 3.0 specification (including try/catch, iterate, accumulators, maps, named modes, content value templates, and extended patterns, as well as serialization and XPath 3.1 features); with the notable exceptions of schema-awareness, streaming, packages, dynamic evaluation, XSLT 1.0 compatibility, and higher-order functions.

Further info: XSLT 3.0 conformance

XSLT 3.0 Recommendation (08 June 2017)

XSLT 3.0 (Higher-Order Functions)

XSLT 3.0 (Higher-Order Functions)

Provides all features from the XSLT 3.0 specification (including try/catch, iterate, accumulators, maps, named modes, content value templates, and extended patterns, as well as serialization and XPath 3.1 features), and additionally dynamic evaluation, XSLT 1.0 compatibility, higher-order functions, and the ability to load (but not create) compiled stylesheet packages. Schema-awareness, streaming, and packages are not implemented.

Further info: XSLT 3.0 conformance

XSLT 3.0 Recommendation (08 June 2017)

 

 

XSLT 3.0 (Schema Aware & Streaming)

XSLT 3.0 (Schema Aware & Streaming)

A schema-aware XSLT 3.0 processor, which provides all features from the XSLT 3.0 specification - including try/catch, evaluate, iterate, accumulators, maps, named modes, content value templates, extended patterns, XPath 3.1 features, dynamic evaluation, XSLT 1.0 compatibility mode, higher-order functions, features that enable streaming (processing of documents that are too large to fit in memory), and a full implementation of packages (which allows stylesheet modules to be independently compiled and distributed).

Further info: XSLT 3.0 conformance

XSLT 3.0 Recommendation (08 June 2017)

 

 

 

 

 

XPath 3.1 (Basic)

XPath 3.1 (Basic)

Provides all XPath 3.1 features other than schema-awareness and higher-order functions. This includes an implementation of maps and arrays, and support for JSON.

Further info: XPath 3.1 conformance

XPath 3.1 Recommendation (21 March 2017)

XPath 3.1 (Higher-Order Functions)

XPath 3.1 (Higher-Order Functions)

Provides all XPath 3.1 features, other than schema-awareness. This includes an implementation of maps and arrays, and support for JSON; and features that require higher-order functions - specifically, the ability to use functions as values, including dynamic function calls, inline functions, partial function application, and specific higher-order functions.

Further info: XPath 3.1 conformance

XPath 3.1 Recommendation (21 March 2017)

 

 

XPath 3.1 (Schema Aware)

XPath 3.1 (Schema Aware)

Provides all XPath 3.1 features. This includes features that require schema processing - specifically, any use of source documents with type annotations, and any use of XPath expressions that contain the names of schema components such as element declarations and types, other than the built-in types. It also includes an implementation of maps and arrays, and support for JSON, and features that require higher-order functions - specifically, the ability to use functions as values, including dynamic function calls, inline functions, partial function application, and specific higher-order functions.

Further info: XPath 3.1 conformance

XPath 3.1 Recommendation (21 March 2017)

 

 

 

XQuery 3.1 (Basic)

XQuery 3.1 (Basic)

Provides the following features, as defined in section 5 of the XQuery 3.1 specification: Minimal Conformance (including try/catch and "group-by"); Module Feature; and Serialization Feature.

Further info: XQuery 3.1 conformance

XQuery 3.1 Recommendation (21 March 2017)

 

XQuery 3.1 (Higher-Order Functions)

XQuery 3.1 (Higher-Order Functions)

Provides the following features, as defined in section 5 of the XQuery 3.1 specification: Minimal Conformance (including try/catch and "group-by"); Module Feature; Serialization Feature; and Higher-Order Function Feature.

Further info: XQuery 3.1 conformance

XQuery 3.1 Recommendation (21 March 2017)

 

 

XQuery 3.1 (Schema Aware)

XQuery 3.1 (Schema Aware)

Provides the following features, as defined in section 5 of the XQuery 3.1 specification: Minimal Conformance (including try/catch and "group-by"); Module Feature; Serialization Feature; Higher-Order Function Feature; Schema Aware Feature; and Typed Data Feature. (That is, all optional features except the Static Typing Feature and fn:put() Feature.)

Further info: XQuery 3.1 conformance

XQuery 3.1 Recommendation (21 March 2017)

 

 

 

 

 

XQuery Update 1.0

XQuery Update 1.0

Saxon provides all the features defined in the XQuery Update 1.0 specification. The implementation allows XQuery Update 1.0 syntax to be mixed with XQuery 3.1 syntax.

Further info: XQuery Update 1.0 conformance

XQuery Update 1.0 Recommendation (17 March 2011)

 

 

 

 

 

XML Schema 1.0 Validation

XML Schema 1.0 Validation

Saxon includes a complete implementation of XML Schema 1.0. This provides the ability to process XSD 1.0 schema documents and use them to validate instance documents. Note that Saxon does not expose the full PSVI, as required by the conformance rules in the XSD 1.0 Recommendation. Also includes Saxon extension functions to provide access to a compiled schema.

Further info: XML Schema 1.0 conformance

XML Schema 1.0 Recommendation (28 October 2004)

 

 

 

XML Schema 1.1 Validation

XML Schema 1.1 Validation

Saxon includes a complete implementation of XML Schema 1.1. This provides the ability to process schema documents that use the new features of XSD 1.1, and use them to validate instance documents. More specifically, in the language of section 2.4 of the specification, it is a General-Purpose Web-Aware Validator. Also includes Saxon extension functions to provide access to a compiled schema.

Further info: XML Schema 1.1 conformance

XML Schema 1.1 Recommendation (05 April 2012)

 

 

 

Performance Features HE PE EE EE-T EE-Q EE-V JS
Binary XML

Binary XML

Saxon's PTree format is a serialized binary representation of Saxon's internal tree format. It occupies around the same amount of disk space as the original XML, but is faster to serialize and faster to reparse.

Further info: The PTree file format

 

 

Byte code generation

Byte code generation

Allows hot-spot code generation for XSLT, XQuery, XPath, and XML Schema. Available for both Java and .NET platforms, typically giving a 25% performance boost.

Further info: Compiling a Stylesheet

 

 

 

Document projection

Document projection

This feature performs static analysis of a query and uses this to filter a document during loading, so that the only parts held in memory are those parts needed to answer the query. For simple queries on large documents this can give substantial memory savings.

Further info: Document projection

 

 

 

 

 

Export stylesheet packages

Export stylesheet packages

XSLT 3.0 packaging allows stylesheet modules to be independently compiled and distributed, and provides much more "software engineering" control over public and private interfaces, and the like. The ability to save packages in compiled form ("stylesheet export file", SEF) gives much faster loading of frequently used stylesheets, and also enables in-browser execution using Saxon-JS.

Further info: Compiling a Stylesheet

 

 

 

 

 

Import stylesheet packages

Import stylesheet packages

Allows the importing of stylesheet packages in compiled form. Possible with all editions except Saxon-HE, provided the package only uses features available in that edition.

Further info: Compiling a Stylesheet

 

Multi-threading (XPath)

Multi-threading (XPath)

Takes advantage of multi-core CPUs by providing automatic parallel execution of the collection() function.

 

 

 

Multi-threading (XSLT)

Multi-threading (XSLT)

Takes advantage of multi-core CPUs by providing automatic parallel execution of the xsl:result-document instruction; plus an extension attribute saxon:threads to allow multi-threaded execution of xsl:for-each instructions under the control of the stylesheet author.

 

 

 

 

 

Optimizer (Basic)

Optimizer (Basic)

The Basic optimizer provided with all Saxon editions provides a wide range of static and dynamic optimizations including full pipelining of list operations, lazy evaluation of variables, elimination of redundant sorting operations, etc.

Optimizer (Advanced)

Optimizer (Advanced)

The Advanced optimizer provides the wide range of static and dynamic optimizations featured in the Basic optimizer - including full pipelining of list operations, lazy evaluation of variables, elimination of redundant sorting operations, etc. - and additionally provides join optimization, inlining of variables and functions, just-in-time compilation of template rules, and optimized searching of large sets of template rules, where feasible.

 

 

 

 

Reading W3C schemas and DTDs

Reading W3C schemas and DTDs

The W3C web server now routinely rejects requests for commonly-referenced files such as the DTD for XHTML, causing parsing failures. In response to this, Saxon now includes copies of these documents within the issued JAR file, and recognizes requests for these documents, satisfying the request using the local copy.

 

Streaming (XPath)

Streaming (XPath)

Provides saxon:stream(), an extension function to allow large documents to be processed without holding the whole document in memory.

Further info: Streaming of Large Documents

 

 

 

Streaming (XSLT)

Streaming (XSLT)

Allows large documents to be processed without holding the whole document in memory. Provides the streaming features of the XSLT 3.0 specification.

Further info: Streaming of Large Documents

 

 

 

 

 

Extensibility HE PE EE EE-T EE-Q EE-V JS
EXSLT extension functions

EXSLT extension functions

A selection of EXSLT extension functions are provided (in the modules Common, Dates and Times, Math, Random, and Sets), as listed in the documentation.

Further info: EXSLT extensions

 

 

EXPath extension functions

EXPath extension functions

A selection of EXPath extension functions are provided (in the modules Archive, Binary, and File), as listed in the documentation.

Further info: EXPath extensions

 

 

Extensibility using custom classes

Extensibility using custom classes

Ability to write extension functions (for use in XSLT, XQuery, or XPath) by implementing a Saxon-defined interface and registering the implementation with the Saxon Configuration.

Further info: Extensibility

 

Extensibility using reflexion (Java and .NET)

Extensibility using reflexion (Java and .NET)

Ability to access existing Java or .NET methods dynamically and invoke them as extension functions by means of dynamic loading and reflexion.

Further info: Extensibility

 

 

Extensibility using reflexion (JavaScript)

Extensibility using reflexion (JavaScript)

Ability to access existing JavaScript objects and functions dynamically.

 

 

 

 

 

 

Event handling extensions

Event handling extensions

Ability to write template rules which respond to user interaction events in the browser.

 

 

 

 

 

 

Saxon extension functions (Basic)

Saxon extension functions (Basic)

Extension functions, as listed in the documentation, in the Saxon namespace. The Basic level excludes extension functions that depend on streaming or schema-awareness.

Further info: Saxon extension functions

 

 

Saxon extension functions (Advanced)

Saxon extension functions (Advanced)

Extension functions, as listed in the documentation, in the Saxon namespace. The Advanced level includes those that depend on streaming or schema-awareness: saxon:schema(), saxon:stream(), and saxon:validate().

Further info: Saxon extension functions

 

 

 

SQL extension

SQL extension

XSLT extension instructions providing access to SQL databases. Available on the Java platform only (not .NET).

Further info: Saxon SQL extension

 

 

XSLT element extensibility

XSLT element extensibility

Ability to implement XSLT extension instructions by implementing a Saxon-defined interface and registering the implementation with the Saxon Configuration.

Further info: Writing XSLT extension instructions

 

 

Localization (Basic)

Localization (Basic)

Run-time localization support for formatting of dates and numbers, and sorting and comparison of strings, building on the capabilities of the Java Virtual Machine.

Further info: Unicode collation, Localizing numbers and dates

 

Localization (Advanced)

Localization (Advanced)

Run-time localization support for formatting of dates and numbers, and sorting and comparison of strings, building on the capabilities of the ICU-J library. The Advanced level also includes APIs which allow additional languages to be supported.

Further info: Unicode collation, Localizing numbers and dates

 

 

Interfaces, APIs HE PE EE EE-T EE-Q EE-V JS
JAXP API

JAXP API

Implementations of the standard JAXP interfaces for XSLT transformation, XPath evaluation, and XML Schema validation. Applies to the Java platform only.

Further info: JAXP API conformance

 

S9API API

S9API API

Saxon's native interface for processing XSLT, XQuery, XPath, and XML Schema. Available in slightly different forms on the Java and .NET platforms.

 

Support for DOM

Support for DOM

Ability to use a DOM (Document Object Model) for the input and output of transformations and queries. On the .NET platform this includes the System.XML DOM classes.

Further info: Object models

Optimized support for DOM

Optimized support for DOM

Indexing of a supplied DOM tree to provide fast navigation (the Domino Model).

Further info: Domino Tree Model

 

 

 

Support for JDOM, JDOM2, AXIOM, DOM4J, and XOM

Support for JDOM, JDOM2, AXIOM, DOM4J, and XOM

Ability to use a JDOM, JDOM2, AXIOM, DOM4J, and XOM for the input or output of transformations and queries. Applies to the Java platform only. Note that the code for these interfaces is open source and can be compiled to work with Saxon-HE, but it does not come packaged with the Saxon-HE download.

Further info: Object models

 

 

XQJ API

XQJ API

Implementations of the standard XQJ interfaces for XQuery processing. Applies to the Java platform only. Note that the XQJ interfaces have been removed from the standard download of Saxon-HE because the Oracle specification license is not open source, but they are available on request.

Further info: XQJ API conformance

 

 

View the full product descriptions