Internal changes
The Receiver
interface has changed so it now passes a Configuration
down
the pipeline rather than a NamePool
. The Configuration
gives access to the
NamePool
and to much else besides (for example, schema information, and the ErrorListener).
The getTypedValue()
method of the NodeInfo
interface now takes a parameter,
the Configuration
object. This is to provide access to schema information needed to extract the typed
value of the node. The schema information available in this Configuration must include definitions of the schema types
that were used to validate the node and give it a type annotation.
The specification (and implementation) of the getURI()
method of the NodeInfo
interface
has been tidied up: it was previously unclear when it returned null and when it returned an empty string. It now returns an
empty string in all cases where the node has no namespace URI (which matches the behavior of the XPath namespace-uri()
function).
When output is directed to a SAX ContentHandler
, any type annotations on attributes that correspond to the basic
XML attribute types (such as ID and IDREFS) are now supplied to the ContentHandler.
Namespace undeclarations of the form xmlns:p=""
(as permitted
by XML Namespaces 1.1) are now passed to the startPrefixMapping()
method of
a user-defined ContentHandler
only if
undeclare-namespaces="yes"
is specified on xsl:output
.
The way that tracing works (the -T option) has been changed. If tracing is enabled at compile time, a trace
instruction is wrapped around every "real" instruction to contain the trace logic. This means there are no run-time
checks whether tracing is enabled, except for the instructions such as xsl:apply-templates
and
xsl:for-each
that trace changes to the context item.
In XQuery, the code generated for tree construction is in many cases more efficient, avoiding the need to construct temporary trees and then copy them unnecessarily.