XSLT 3.0 implementation
(Also affects XSLT 2.0): Saxon no longer detects or reports the recoverable error XTRE0270 (conflicting definitions of
xsl:preserve-space). Instead it always takes the optional recovery action,
which is to use whichever declaration comes last. Previously this was the behaviour when applying stripping to an existing
tree, but not when using a stripping filter during tree construction. The change is made in the interests of simplifying and
speeding up the code (matching of whitespace stripping rules no longer shares the same code as template rule matching).
(Also affects XSLT 2.0): The call
system-property("xsl:is-schema-aware") now returns true or false depending on whether
the particular stylesheet is schema-aware (which is true if it uses
xsl:import-schema or if schema-awareness was selected
via an API or command line option). Previously it returned true if the stylesheet was processed using the schema-aware version of the
Saxon product, regardless of configuration settings.
XSLT 3.0 features are available only in Saxon-EE or (in some cases) Saxon-PE, and they need to be enabled explicitly. From the
command line this can be done using the option
xsltversion:3.0; the default is to take the version from the
element, so that XSLT 3.0 features are enabled if and only if the stylesheet itself specifies
XPath 3.0 constructs such as higher-order functions (to the extent they are implemented) are automatically available when XSLT 3.0 is enabled.
xsl:evaluate instruction is implemented.
xsl:copy instruction now has an optional
select attribute, defaulting to
saxon:finally instructions are
xsl:on-completion, and are available
only if XSLT 3.0 support is enabled. The
instruction is now allowed to take a sequence constructor as its content.
saxon:catch elements are renamed
and are available only if XSLT 3.0 support is enabled.
The syntax of match patterns has been extended, to include the forms
as well as the two-argument form of
id() and the three-argument form of
"union" is allowed as an alternative to the
Not yet implemented in patterns:
except operators, parentheses, "~" syntax, patterns matching
atomic values or function items, descendant and descendant-or-self axes, namespace-node()
unparsed-text-lines() function is implemented.
snapshot() functions are implemented. (There is a restriction in
snapshot(), in that it does
not yet handle attribute or namespace nodes.
xsl:analyze-string instruction accepts the enhancements to regular expressions and flags defined
in XPath 3.0. It also now accepts an empty sequence as the value of the
select attribute, treating it in the
same way as a zero-length string.