This chart describes the features present in each edition of Saxon 13 available for Java, .NET, and C/C++, PHP and Python, and the latest release of SaxonJS.
Full Product descriptions are also available to download below.
For features in older versions of the products, see the relevant Feature Matrix:
Saxon 12, Saxon 11, Saxon 10, Saxon 9.9, Saxon 9.8.
The table below lists product features and indicates which features are available for products on the different platforms. (See the "Product packages" box on the right for the definitions of these packages and platform availability.) If the feature is restricted to certain packages on a platform, then the table shows the minimal product package(s) required. The product packages are ordered as: PE ⊂ EEV ⊂ (EET | EEQ) ⊂ EE. For instance, this means all PE and EEV features are available with all EE packages.
'●' means the feature is available for all editions on that platform.
| XSLT Features | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
XSLT 3.0 Basic Processor
XSLT 3.0 Basic ProcessorProvides all mandatory features from the XSLT 3.0 specification (including try/catch, iterate, accumulators, maps, named modes, content value templates, and extended patterns, as well as features retained from XSLT 2.0). Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 3.0 Schema Awareness
XSLT 3.0 Schema AwarenessProvides a schema-aware XSLT 3.0 processor: specifically, the ability to import an XSD schema when compiling a stylesheet, to use this for type-checking, and to process and create schema-validated instance documents. Further info: XSLT 3.0 conformance |
EET |
EET |
EET |
|
|
XSLT 3.0 Serialization
XSLT 3.0 SerializationProvides the serialization feature: specifically, the ability to convert the result trees produced as output of an XSLT transformation to lexical XML, or other formats including HTML, JSON, and plain text, under the control of serialization parameters defined in the stylesheet or via an external API. Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 3.0 Compatibility
XSLT 3.0 CompatibilityProvides XSLT 1.0 compatibility mode as defined in the XSLT 3.0 specification. If
a stylesheet
specifies Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 3.0 Streaming
XSLT 3.0 StreamingIncludes additional features of the XSLT 3.0 specification that enable streaming (processing of documents that are too large to fit in memory). Further info: XSLT 3.0 conformance |
EET |
EET |
EET |
|
|
XSLT 3.0 Dynamic Evaluation
XSLT 3.0 Dynamic EvaluationProvides use of the XSLT 3.0 instruction Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 3.0 XPath 3.1 Feature
XSLT 3.0 XPath 3.1 FeatureProvides full use of XPath 3.1 features, including XPath 3.1 functions, and maps and arrays. Note: Saxon supports XPath 3.1 unconditionally in XSLT 3.0 stylesheets, it does not offer a processing mode in which XPath is restricted to version 3.0. Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 3.0 Higher-Order Functions
XSLT 3.0 Higher-Order FunctionsProvides higher-order functions: specifically, the ability to use functions as values, including dynamic function calls, inline functions, partial function application, and the standard higher-order functions defined in the XPath 3.1 function library. Further info: XSLT 3.0 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XSLT 4.0 Extensions
XSLT 4.0 ExtensionsProvides many features from the draft XSLT 4.0 specification. Generally, Saxonica aims to avoid making incompatible changes except in major releases. But since the 4.0 features are not yet entirely stable, this policy does not apply: the aim instead will be to respond rapidly to changes in the developing specification. Maintenance releases in the 13.x series may therefore reflect changes in the draft specifications. Further info: QT4 extensions |
PE |
EEV |
PE |
|
| XPath Features | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
XPath 3.1 Basic
XPath 3.1 BasicProvides all XPath 3.1 features which do not require schema-awareness or higher-order functions. This includes an implementation of maps and arrays, and support for JSON, as well as language constructs retained from earlier XPath versions. Further info: XPath 3.1 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XPath 3.1 Schema Aware
XPath 3.1 Schema AwareProvides schema-awareness: 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. Further info: XPath 3.1 conformance |
EEV |
EEV |
EEV |
|
|
XPath 3.1 Higher-Order Functions
XPath 3.1 Higher-Order FunctionsProvides higher-order functions: specifically, the ability to use functions as values, including dynamic function calls, inline functions, partial function application, and a library of built-in higher-order functions. Further info: XPath 3.1 conformance SaxonJS further info: XSLT 3.0 and XPath 3.1 conformance |
● |
● |
● |
● |
|
XPath 4.0 Extensions
XPath 4.0 ExtensionsProvides many features from the draft XPath 4.0 specification. Generally, Saxonica aims to avoid making incompatible changes except in major releases. But since the 4.0 features are not yet entirely stable, this policy does not apply: the aim instead will be to respond rapidly to changes in the developing specification. Maintenance releases in the 13.x series may therefore reflect changes in the draft specifications. Further info: QT4 extensions |
PE |
EEV |
PE |
|
| XQuery Features | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
XQuery 3.1 Minimal Conformance
XQuery 3.1 Minimal ConformanceProvides Minimal Conformance (including try/catch and "group-by", as well as language features retained from earlier XQuery versions) as defined in section 5 of the XQuery 3.1 specification. Further info: XQuery 3.1 conformance |
● |
● |
● |
|
|
XQuery 3.1 Schema Aware
XQuery 3.1 Schema AwareProvides the Schema Aware feature. This enables a query to import an XSD schema and use it for type checking, and to validate instance documents. Further info: XQuery 3.1 conformance |
EEQ |
EEQ |
EEQ |
|
|
XQuery 3.1 Typed Data
XQuery 3.1 Typed DataProvides the Typed Data feature. This enables a query to accept input data that has been validated against a schema. Further info: XQuery 3.1 conformance |
EEQ |
EEQ |
EEQ |
|
|
XQuery 3.1 Static Typing
XQuery 3.1 Static TypingSaxon does not implement the Static Typing feature. The static typing feature treats an expression as an error unless it is guaranteed type-safe at compile time. Without this feature, type checking is performed dynamically at run time. Saxon does compile time analysis to minimize the amount of dynamic checking that is needed. Further info: XQuery 3.1 conformance |
|
|
|
|
|
XQuery 3.1 Modules
XQuery 3.1 ModulesProvides the Module feature, which allows a query to be made up of multiple modules. Further info: XQuery 3.1 conformance |
● |
● |
● |
|
|
XQuery 3.1 Serialization
XQuery 3.1 SerializationProvides the Serialization feature. This allows the output of a query to be serialized as lexical XML, or in other formats including HTML, JSON, and plain text, under the control of serialization parameters contained either in the query itself, or supplied externally. Further info: XQuery 3.1 conformance |
● |
● |
● |
|
|
XQuery 3.1 Higher-Order Functions
XQuery 3.1 Higher-Order FunctionsProvides the Higher-Order Function feature. This provides the ability to use functions as values, including dynamic function calls, inline functions, partial function application, and a library of built-in higher-order functions. Further info: XQuery 3.1 conformance |
● |
● |
● |
|
|
XQuery Update 1.0
XQuery Update 1.0Saxon 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. XQuery Update in SaxonCS is offered "as is": the feature is present, but has not been extensively tested. Further info: XQuery Update 1.0 conformance |
EEQ |
EEQ |
EEQ |
|
|
XQuery 4.0 Extensions
XQuery 4.0 ExtensionsProvides many features from the draft XQuery 4.0 specification. Generally, Saxonica aims to avoid making incompatible changes except in major releases. But since the 4.0 features are not yet entirely stable, this policy does not apply: the aim instead will be to respond rapidly to changes in the developing specification. Maintenance releases in the 13.x series may therefore reflect changes in the draft specifications. Further info: QT4 extensions |
PE |
EEV |
PE |
|
| XML Schema Features | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
XML Schema 1.0 Validation
XML Schema 1.0 ValidationSaxon 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. From Saxon 10, the Saxon schema processor accepts XSD 1.1 syntax unconditionally. XSD 1.0 schemas are processed according to the rules of the XSD 1.1 specification. This offers a very high level of backwards compatibility, except in a few areas where the XSD 1.0 rules were unclear and have been clarified in the XSD 1.1 recommendation. Further info: XML Schema 1.0 conformance |
EEV |
EEV |
EEV |
|
|
XML Schema 1.1 Validation
XML Schema 1.1 ValidationSaxon 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 |
EEV |
EEV |
EEV |
|
| Performance Features | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
Export stylesheet packages
Export stylesheet packagesXSLT 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 SaxonJS. Further info: Compiling a stylesheet SaxonJS further info: Exporting stylesheets for SaxonJS |
EET |
EET |
EET |
● |
|
Import stylesheet packages
Import stylesheet packagesAllows the importing of stylesheet packages in compiled form. Possible with all editions provided the package only uses features available in that edition. Further info: Compiling a stylesheet SaxonJS further info: Exporting stylesheets for SaxonJS |
● |
● |
● |
● |
|
Multi-threading (XPath)
Multi-threading (XPath)Takes advantage of multi-core CPUs by providing automatic parallel execution of the
|
EEV |
EEV |
EEV |
|
|
Multi-threading (XSLT)
Multi-threading (XSLT)Takes advantage of multi-core CPUs by providing automatic parallel execution of the
|
EET |
EET |
EET |
|
|
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. |
EET EEQ |
EET EEQ |
EET EEQ |
|
|
Reading W3C schemas and DTDs
Reading W3C schemas and DTDsThe W3C web server 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/DLL file, and recognizes requests for these documents, satisfying the request using the local copy. |
● |
● |
● |
|
|
Streaming (XPath and XQuery)
Streaming (XPath and XQuery)Provides Further info: Streaming XML documents |
EEV |
EEV |
EEV |
|
|
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 XML documents |
EET |
EET |
EET |
|
| Extensibility | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
EXSLT extension functions
EXSLT extension functionsA selection of EXSLT extension functions are provided (in the modules Common, Dates and Times, Math, Random, and Sets), as listed in the documentation. Only the Further info: EXSLT extensions |
PE |
EEV |
PE |
|
|
EXPath extension functions
EXPath extension functionsA selection of EXPath extension functions are provided (in the modules Archive, Binary, and File), as listed in the documentation. Further info: EXPath extensions |
PE |
EEV |
PE |
|
|
Extensibility using custom classes
Extensibility using custom classesAbility 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)
Extensibility using reflexion (Java)Ability to access existing Java methods dynamically and invoke them as extension functions by means of dynamic loading and reflexion. Further info: Extensibility |
PE |
|
|
|
|
User-defined extension functions (C++, PHP and Python)
User-defined extension functions (C++, PHP and Python)Ability to access existing C++, PHP and Python functions dynamically. |
|
|
PE |
|
|
User-defined extension functions (JavaScript)
User-defined extension functions (JavaScript)Ability to access existing JavaScript objects and functions dynamically. SaxonJS further info: Saxon interactive extensions |
|
|
|
● |
|
Event handling extensions
Event handling extensionsAbility to write template rules which respond to user interaction events in the browser. SaxonJS further info: Handling user input events |
|
|
|
● |
|
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 SaxonJS further info: Saxon extensions |
PE |
EEV |
PE |
● |
|
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:
Further info: Saxon extension functions SaxonJS further info: Saxon extensions |
EEV |
EEV |
EEV |
|
|
SQL extension
SQL extensionXSLT extension functions and instructions providing access to SQL databases. Further info: Saxon SQL extension |
PE |
|
|
|
|
XSLT element extensibility
XSLT element extensibilityAbility 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 |
PE |
|
|
|
| Localization | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
Formatting numbers in English
Formatting numbers in EnglishNumbers can be formatted as words in English. Further info: Formatting numbers |
● |
● |
● |
|
|
Formatting dates in English
Formatting dates in EnglishDates can be formatted as words in English. Further info: Formatting dates |
● |
● |
● |
● |
|
Formatting numbers and dates using ICU
Formatting numbers and dates using ICUFull support for formatting numbers and dates as words in different languages is provided using the ICU library for the relevant platform (ICU4J for SaxonJ, and ICU4N for SaxonCS). Further info: Numbers and dates from ICU |
PE |
EEV |
|
|
|
Sorting and collations using platform locales
Sorting and collations using platform localesSupport for sorting and comparison of strings using the Unicode Collation Algorithm uses the collation facilities available directly from the core library for the relevant platform (the JDK for SaxonJ and SaxonC, and the core .NET library for SaxonCS). Further info: Sorting and collations |
● |
● |
● |
|
|
Sorting and collations using ICU
Sorting and collations using ICUSupport for sorting and comparison of strings using the Unicode Collation Algorithm uses the collation facilities available from the ICU library for the relevant platform (ICU4J for SaxonJ, and ICU4N for SaxonCS). Further info: Unicode Collation Algorithm |
PE |
EEV |
|
|
|
Sorting and collations using JavaScript API
Sorting and collations using JavaScript APISupport for sorting and comparison of strings using the Unicode Collation Algorithm
uses the
collation facilities available from the |
|
|
|
● |
| Interfaces, APIs | Java SaxonJ | .NET SaxonCS | Native SaxonC | JavaScript SaxonJS |
|
S9API API
S9API APISaxonJ's native interface for processing XSLT, XQuery, XPath, and (with Saxon-EE) XML Schema, on Java. |
● |
|
|
|
|
.NET API
.NET APISaxonCS's interface for processing XSLT, XQuery, XPath, and (with Saxon-EE) XML Schema, on .NET. Further info: Saxon API for .NET |
|
● |
|
|
|
C++ API
C++ APISaxonC's interface for processing XSLT, XQuery, XPath, and (with Saxon-EE) XML Schema, on C++. |
|
|
● |
|
|
JAXP API
JAXP APIImplementations of the standard JAXP interfaces for XSLT transformation, XPath evaluation, and (with Saxon-EE) XML Schema validation. Further info: JAXP API conformance |
● |
|
|
|
|
XQJ API
XQJ APIImplementations of the standard XQJ interfaces for XQuery processing. 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 |
PE |
|
|
|
|
PHP extension
PHP extensionInterface module that allows SaxonC to be invoked from PHP applications. |
|
|
● |
|
|
Python extension
Python extensionInterface module that allows SaxonC to be invoked from Python applications. |
|
|
● |
|
|
Support for DOM
Support for DOMAbility 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 SaxonJS further info: Nodes |
● |
● |
|
● |
|
Optimized support for DOM
Optimized support for DOMIndexing of a supplied DOM tree to provide fast navigation (the Domino Model). Further info: Domino tree model |
EEV |
|
|
|
|
Support for JDOM2, AXIOM, DOM4J, and XOM
Support for JDOM2, AXIOM, DOM4J, and XOMAbility to use a JDOM2, AXIOM, DOM4J, and XOM for the input or output of transformations and queries. 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 |
PE |
|
|
|
The table below contains links to the full product descriptions for each edition of Saxon 13 available for Java, .NET, and C/C++, PHP and Python, and the latest release of SaxonJS.
| Edition | Java | .NET | Native | JavaScript |
| HE |
SaxonJ-HE 13 |
SaxonCS-HE 13 |
SaxonC-HE 13 |
SaxonJS 2 |
| PE |
SaxonJ-PE 13 |
SaxonC-PE 13 |
||
| EE |
SaxonJ-EE 13 |
SaxonCS-EE 13 |
SaxonC-EE 13 |
|
| EET |
SaxonJ-EET 13 |
SaxonCS-EET 13 |
SaxonC-EET 13 |
|
| EEQ |
SaxonJ-EEQ 13 |
SaxonCS-EEQ 13 |
SaxonC-EEQ 13 |
|
| EEV |
SaxonJ-EEV 13 |
SaxonCS-EEV 13 |
SaxonC-EEV 13 |
Java: SaxonJ 13 for Java 17+ first released May 2026.
.NET: SaxonCS 13 for .NET 8+ first released May 2026, available in Home and Enterprise Editions.
Native: SaxonC 13 first released May 2026, built from SaxonJ 13.
JavaScript: SaxonJS 2 does not require a commercial license.
Enterprise Edition packages for SaxonJ, SaxonCS, and SaxonC: