| SAXONICA | 
When the source document is supplied as a pre-built tree (in any format), and Saxon strips whitespace
            text nodes as requested by the stylesheet, the space stripping now takes account of any xml:space
            attributes present in the tree. Specifically, whitespace text nodes are preserved if xml:space="preserve"
            is specified. This can be expensive, but is required for conformance. When supplying pre-built trees
               as input (whether as DOM, JDOM, or XOM trees, or as native Saxon trees) it is best not to use
               xsl:strip-space in the stylesheet.
When the source document is supplied as a DOM or JDOM tree, multiple adjacent text and CDATA nodes are now mapped to a single text node in the XPath model. If the XPath text node is passed to a Java extension function, the extension function sees the first node in the underlying sequence. This change has not yet been made for XOM trees.
Saxon accepts URIs of the form "document.xml#id" where "id" is the value of an attribute defined in the DTD
            as being of type ID. It now also accepts such URIs where the fragment identifier is the value of an xml:id
            attribute.
         
Where a stylesheet is embedded in a source document, or a schema is embedded within a stylesheet, the base URI of the embedded document was previously taken as being the same as the base URI of the containing document. It is now taken as the base URI of the relevant element. This means that the xml:base attribute is taken into account.
In a previous release, following a change in the W3C specifications, Saxon was changed so
            that DTD-based types such as ID and IDREF did not set the type annotation on the attribute node.
            An unintended consequence of this change was that the idref() function stopped working when an
            attribute was defined in the DTD as being of type IDREF or IDREFS. This has now been fixed. Doing so
            required some changes to the data model. The is-id and is-idref properties defined in the W3C data model
            are not reflected directly in the Saxon implementation, but the information is now available in a slightly
            different way. The method getTypeAnnotation() when applied to an attribute node may
            now return a value that contains the fingerprint code for the type xs:ID, xs:IDREF,
            or xs:IDREFS together with a high bit (NodeInfo.IS_DTD_TYPE) indicating
            that the type is DTD-derived rather than schema-derived. When this bit is set, the value should be treated
            as being untyped atomic, but the type annotation returned indicates whether the is-id or is-idref properties
            are present. This same change applies to the type code passed with attributes in the Receiver
            and PullProvider interfaces.