Changes to internal APIs

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.