XSLT 2.0 conformance

Since Saxon 9.8, Saxon no longer aims to achieve complete XSLT 2.0 conformance.

The vast majority of XSLT 2.0 stylesheets will work correctly, because 3.0 is backwards compatible. There are a few very minor incompatibilities between XSLT 3.0 and XSLT 2.0 listed in the W3C specifications: for example, some error codes have changed.

Consider an XSLT stylesheet containing an xsl:mode declaration:

  1. If the stylesheet specifies version="2.0", an XSLT 2.0 processor is required to reject this as an error, but Saxon will accept it and interpret it according to the XSLT 3.0 specification.
  2. If the stylesheet specifies version="3.0", an XSLT 2.0 processor is required to ignore the declaration under the rules for forwards compatibility mode, but Saxon will accept it and interpret it according to the XSLT 3.0 specification.