JAXP interface (transformation, XPath, schema processing)

The reset() method has been implemented in Saxon's implementation of the JAXP Transformer class. This is designed to allow serial reuse of a Transformer. With Saxon, there is no benefit in reusing a transformer rather than creating a new one, unless you wish to reuse the document pool (the set of documents loaded using the doc() and document() functions. Therefore, this method does not clear the document pool. If you want to clear the document pool, call the resetDocumentPool() method as well.

It is now possible to register a CollationURIResolver with the Configuration (or, in XSLT, with the TransformerFactory) to resolve collation URIs used in a query or stylesheet, or in freestanding XPath expressions. If this is done, Saxon's collation URIs in the form http://saxon.sf.net/collation?... followed by query parameters are not recognized (however, the user-written collation URI resolver can invoke the default collation URI resolver to handle this format if it wishes.)

If an extension function returns an array, and some items in the array are null, Saxon now maps this to an XPath sequence in which the null items in the array are ignored. Previously this failed with the error "Object is null".

The type code returned by NodeInfo.getTypeAnnotation() may now include a bit indicating that the returned type is DTD-derived rather than schema-derived. This bit is also set when a type code is passed for an attribute node in the Receiver and PullProvider interfaces.