XSLT 3.0 implementation

Saxon 9.7 implements the XSLT 3.0 Candidate Recommendation (published 19 November 2015) almost in its entirety. This has involved many detailed changes. The most significant is the implementation of the full semantics of packages, including the ability to override components from used packages.

New features connected with XSLT 3.0 packages include:

Saxon allows XSLT 3.0 packages to be separately compiled. The compiled version of a package can be exported (as an XML file whose detailed format is unpublished), saved on disk, and distributed, in the same way as object code produced by conventional compilers. The compiled package is in fact a representation of the abstract syntax tree of the original stylesheet, as amended by all the various processes carried out during static analysis (type checking, optimization, allocation of slots to variables, etc). Loading a compiled package is considerably faster than loading of original source code.

In this release (9.7), the compiled version of the package does not include generated bytecode. When a compiled package is loaded, the relevant code will always be interpreted.

The new facilities supporting XSLT 3.0 packages supersede the old mechanism for saving a stylesheet (the net.sf.saxon.ptree.StylesheetPackager command), which is dropped in Saxon 9.7.

Other XSLT 3.0 changes implemented in Saxon 9.7 include:

See also changes listed under the 'Streamed Processing' category.