# Changes to XSLT 2.0 support

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.

Next