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.