Exselt supports the W3C standards and working drafts of XDM 3.0, XPath 3.0 and parts of XPath 3.1 and XML Serialization 3.0. This page lists the level of support for the optional and required features that Exselt offers. See for a programmer's view and a more detailed explanation of new language constructs:
Optional XSLT 3.0 features
Some parts of XSLT 3.0 are not required to be supported. Exselt supports the following optional XSLT 3.0 features:
- Dynamic evaluation
- Backwards compatibility
- XML 1.1
- Higher order functions
- Unicode 7.0
- XPath 3.0 completely, some parts of XPath 3.1
The XSLT 3.0 specification defines several optional features and dependencies. The following is a more detailed overview of these features as they are supported by Exselt. See detailed list of new XSLT 3.0 features for a list of what is new in XSLT 3.0.
Exselt supports XSLT version 3.0.
XML Schema version
Not an optional feature per se, as it is required to support package manifests. Exselt supports all parts of the package manifest specification and allows you to use a package resolver XML file to locate packages anywhere on your system.
XSLT 1.0 backwards compatibility feature
We support XSLT 1.0 backwards compatibility to a large extent. An optional part of this feature is to support
disable-output-escaping, which is still used in the wild, but has been deprecated since XSLT 2.0. At present we do not support and we are not planning to, mainly because this feature has many implementation-dependent behaviors. If you require it, you should consider using
<xsl:character-map> instead, which is well-defined and does not cause processor-dependence.
XSLT 2.0 backwards compatibility
XSLT 3.0 is fully backwards compatible. The only exceptions to this rule are that certain previous error scenarios are now allowed. Most notably, what used to be a processor-dependent error or recovery action, is now a clearly defined behavior. Recoverable errors do no longer exist.
Exselt does not change its behavior when using XSLT 2.0 backwards compatibility in an XSLT 3.0 stylesheet. In fact, the conformance requirement is to explicitly not do so.
XPath namespace axis
Support for the namespace axis is optional in XPath. Exselt supports it in XPath and XSLT, whether or not 1.0 compatibility is enabled.
Dynamic evaluation feature
XQuery invocation feature
Exselt does not support XQuery invocation at present.
Exselt supports all serialization conformance requirements of the optional serialization feature, including the newly introduced support for HTML5 and XHTML5.
Higher order functions feature
Support for higher-order functions (aka HOF) is fully supported. As such, you can assign function items to variables, use anonymous functions and pass functions around as if they are any other data type.
At present, the schema-aware feature is not available, but is planned.
Exselt supports streaming. The current version supports an earlier draft of the specification. Posture and sweep analysis is updated, but the underlying implementation still requires some work to become fully compliant with the latest Draft.
XML 1.1 feature
Exselt supports serialization to XML 1.1, but does not support reading it. Since XML 1.1 is very rare, we have no plans to support it in the near future, but may do so at user's request.
Exselt support XML fourth edition fully (XSLT requires at least 3rd edition). Most of the new features of XML fifth edition is supported, with the exception of certain new Unicode characters in
Exselt supports Unicode version 7 in most constructs, except for regular expressions, which support Unicode version 5 (you can, however, match any individual character or range of any Unicode version).
At present, XSLT successfully passes all but a few tests in XPath 3.0 (which includes XPath 2.0 and XPath 1.0 tests), which is above the 99.7% percentile. We expect to reach 100% in a short while.
At present, the test suite for XSLT 3.0 is still in development and we are working hard to add new tests. Approximately 97% of all tests, excluding the streaming and schema-aware feature, pass successfully. Of the failing tests, a large part is due to slightly different way of reporting errors (the tests require exact error names to be returned), another part is due to the still changing specification, and henceforth the changing of tests.
When using XSLT 3.0 features, be aware that the public Draft is from August 2014, but our implementation supports the internal Working Draft, which has been in continuous development since then. Any changes made to the public WD have been reported to XSLT's BugZilla. Up till now, since the last public WD, a total of 168 bugs have been reported and fixed.