XSLT 3.0 conformance
The XSLT 3.0 specification is far from complete, so at the time of writing it is not meaningful to discuss conformance in fine detail.
Broadly speaking:
-
Saxon-HE does not implement any XSLT 3.0 features
-
Saxon-PE implements a selection of XSLT 3.0 (and XPath 3.0) features, with the exception of schema-awareness and streaming
-
Saxon-EE implements additional features relating to streaming (processing of a source document without constructing a tree in memory.
For information on streaming, see Streaming of large source documents.
At the time of writing, the latest published working draft is XSLT 2.1 published on 11 May 2010. Since then the WG has produced many internal drafts, and some of the new features appear in Saxon 9.4 ahead of publication by W3C. The WG has announced that XSLT 2.1 will be renumbered XSLT 3.0, and Saxon uses the new numbering.
XSLT 3.0 features are not available unless explicitly requested. The request can be by setting -xsltversion:3.0
on the command line, by calling setXsltLanguageVersion()
on the XsltCompiler
object, or by use of the configuration setting
FeatureKeys.XSLT_VERSION
. Setting version="3.0"
on the xsl:stylesheet
element is recommended, but is not sufficient on its own.
XSLT 3.0 features implemented in Saxon 9.4 include the following:
-
The
xsl:iterate
instruction -
The
xsl:mode
declaration -
The
xsl:merge
instruction -
The
unparsed-text-lines()
function -
The
copy-of
andsnapshot()
functions -
The
xsl:try
instruction -
The
xsl:evaluate
instruction -
The syntax of patterns has been generalized; though not all the new XSLT 3.0 features are implemented.
-
The
select
attribute of thexsl:copy
instruction
Maps, as defined in the draft XSLT 3.0 specification, are implemented as an extension to XPath 3.0. For details see Maps in XPath 3.0.