Exselt support for features of XSLT 3.0

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:

  • Serialization
  • Packages
  • Streaming
  • Dynamic evaluation
  • Backwards compatibility
  • XML 1.1
  • Higher order functions
  • Unicode 7.0
  • XPath 3.0 completely, some parts of XPath 3.1

Detailed list

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.

XSLT version

Exselt supports XSLT version 3.0.

XPath version

Exselt supports XPath version 3.0. Using XSLT with XPath 3.1, an optional feature in XSLT 3.0, is in development. Some parts of XPath 3.1 are already available.

XDM version

Exselt supports XDM version 3.0. Parts of XDM 3.1 are also supported, which includes the new map item datatype.

XML Schema version

Exselt supports XML Schema version 1.0, but has included the xs:error type from XSD 1.1.

Packages

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

XSLT 3.0 introduced a new feature, dynamic evaluation of XPath expressions with <xsl:evaluate>. This instruction is fully supported, but can be switched off at user option for security reasons.

XQuery invocation feature

Exselt does not support XQuery invocation at present.

Serialization feature

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.

Schema-aware feature

At present, the schema-aware feature is not available, but is planned.

Streaming feature

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.

XML editions

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 Name productions.

Unicode

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).

XPath conformance

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.

XSLT conformance

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.