XSLT 3.0 implementation
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.
The xsl:merge
instruction is implemented.
Pattern syntax in the form ~ItemType
is supported, for example match="~xs:integer"
matches an integer. Predicates are allowed on such patterns, for example ~xs:integer[. gt 0]
.
Associated with this change, xsl:apply-templates
(as well as xsl:next-match
and
xsl:apply-imports
can be used to process any kind of item, not only nodes (for example, atomic values
or maps)
Similarly, xsl:for-each-group
with the group-starting-with
or group-ending-with
patterns can now process a sequence of atomic values.
In the xsl:mode
declaration, the values supported for the on-no-match
attribute have
changed, in line with changes in the XSLT 3.0 working draft. The option copy
is renamed shallow-copy
,
stringify
is renamed text-only-copy
, and discard
is renamed deep-skip
. Two
new options are added: deep-copy
and shallow-skip
.
When xsl:copy
is used with a select
attribute (new feature in XSLT 3.0), the
context item for evaluation of the contained sequence constructor is now the item selected by the select
attribute.
The intersect
and except
operators can now be used in match patterns; multiple operators
and parentheses are allowed. Parentheses are also allowed around an expression that is then filtered by
a predicate, for example match="(foo|bar)[*]"
or (//para)[1]
.