XSLT 2.0 implementation

The as attribute in xsl:sequence has been dropped.

The unparsed-text() function returns an empty sequence if the first argument is an empty sequence.

The xsl:number instruction now handles numbers that are too large or too small, or values that cannot be converted to integers, as recoverable errors, as described in the current XSLT 2.0 specification. The range of values that can be formatted using the requested format picture is from 1 to 2^63; other values are output as if the string() function were used.

The rules for handling types in xsl:key have been brought into line with the current rules in the specification. Because of the way that eq is now defined in XPath, a numeric argument to the key() function will no longer match an untypedAtomic key value.

The use of a separate name pool for use at compile time has been discontinued. Since standard element and attribute names are no longer stored in the name pool, this technique is no longer needed.

The xsl:for-each-group instruction now handles heterogeneous grouping keys as defined in the current specification. Non-comparable grouping key values (for example an integer and a string) are treated as being distinct values.

In backwards compatibility mode (that is, with version="1.0"), attribute value templates now observe the first-item rule. That is, <a val="{1,2,3}"/> outputs <a val="1 2 3"/> in 2.0 mode, but <a val="1"/> in 1.0 mode.