XSLT 2.0 implementation

The [xsl:]use-when attribute, which allows conditional inclusion/exclusion of sections of a stylesheet, is implemented. There are some very minor restrictions described in the conformance section. Note that the Saxon implementation of the system-property() function allows Java system properties to be read, which provides a convenient way of supplying information that can be tested in the use-when condition.

The standard attribute [xsl:]default-collation is implemented. This may appear on any instruction in the stylesheet (prefixed xsl if the instruction is not in the XSLT namespace). Its value is a URI that indicates the default collation to be used on that element and its descendants. Note that this doesn't affect the collation used by xsl:sort.

The revised rules for constructing the content of simple-valued nodes (attributes, text nodes, comments, etc) are implemented. The rules are now the same whether the content is constructed using a content constructor or a select attribute, and if the supplied content includes adjacent text nodes, these are concatenated without inserting a separator. Anticipating a change in the specification, these rules have also been implemented for attribute value templates.

The xsl:import-schema may now contain an inline schema (that is, it may have an xs:schema element as a child).

A local variable is no longer visible within an xsl:fallback instruction that is a sibling of the variable declaration. This change has been made to the specification (and will be made to XSLT 1.0 by means of an erratum) because xsl:fallback is only evaluated when its sibling instructions are not evaluated.

Changes affecting xsl:number in backwards-compatible mode have been implemented. The effect is essentially that NaN is output when invalid values are supplied in the value attribute.

Error conditions affecting xsl:decimal-format are now checked more rigorously, as described in the latest W3C specification.

When the XSLT processor is run from the command line, the base output URI now defaults to the current working directory. It is therefore no longer necessary to use the -o option in order to use a relative URI with <xsl:result-document>. For security reasons this change does not apply when invoking Saxon using the Java API, unless the application sets it explicitly.