XSLT 3.0 implementation
XSLT 3.0 is now supported from Saxon-HE upwards. All Saxon editions support the basic conformance level. Other optional conformance features are supported as follows:
- Schema-Awareness: EE only
- Serialization: HE, PE, and EE
- 1.0 Compatibility: PE and EE (see below)
- Streaming: EE only
- Dynamic Evaluation (xsl:evaluate): PE and EE
- Higher-order Functions: PE and EE
- XPath 3.1 support: HE, PE, and EE
Previous Saxon releases supported 1.0 Compatibility mode in Saxon-HE as well as PE and EE. This support has been dropped. Users still running 1.0 stylesheets therefore have three options:
- Convert the stylesheets to 2.0/3.0 (this usually requires little or no change, but it does require testing to ensure that everything still works)
- Upgrade to Saxon-PE
- Stick with Saxon-HE 9.7 for the time being
The xsl:stream
instruction has been generalized to
xsl:source-document. For the time being xsl:stream
is still recognized, and is interpreted as <xsl:source-document streamable="yes">
.
Streamable stylesheet functions are implemented, as defined in the XSLT 3.0 specification. The test coverage for this feature is somewhat sparse, so the implementation might turn out to need more work.
Type checking on maps has been improved. In particular, the static type of the expression map:get(M, K)
(or equivalent
constructs such as M(K)
or M?K
is now deduced from the type of the map if known. The checking is even
stronger if the new (Saxon-specific) mechanism of tuple types (now renamed "record types") is used: see
Record types.