Schema-aware XSLT and XQuery processing
By default the schema-aware processor now uses validation=preserve rather than validation=strip for input documents. This is more efficient, and it gives results that are more consistent with the basic processor.
When validation is requested at the document level, there is now a check that the document contains a single top-level element, and no top-level text nodes. This check had previously been omitted.
In XSLT, document-level validation is now supported using the type
attribute
of the xsl:document
, xsl:result-document
, xsl:copy-of
,
and xsl:copy
instructions.
The distinction between xdt:untyped
and xs:anyType
is now
implemented.
Elements of type xs:ID
(as well as attributes of type xs:ID) are now accessible using the
id()
function.
Subtypes derived from xs:ID
are now recognized when deciding which elements and attributes
have the is-ID
property (and therefore qualify for retrieval using the id()
function).
In line with changes agreed by the Working Groups, it is now an error to apply validation directly to an attribute node if the attribute type is namespace-sensitive (for example, xs:QName or xs:NOTATION). It's not possible to do such validation before the attribute is attached to a parent element as the namespace context is unknown. This only affects XSLT, since XQuery doesn't allow validation at the level of individual attributes anyway.