# 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`.

Next