Saxon extensions to the W3C XSLT/XQuery specifications

An optional second argument is available for saxon:expression(). This allows the namespace context for the XPath expression to be supplied explicitly (by default, it is taken from the namespace context of the calling query or stylesheet). The namespace context is supplied in the form of an element node, whose in-scope namespace bindings are used to declare namespace prefixes available for use within the expression. One way to use this is to supply the element node that actually contains the XPath expression; another way is to construct an element specially for the purpose.

A new extension function saxon:in-summer-time() is available. It determines whether a given date/time is in summer time (daylight savings time) in a given country or named timezone, to the extent that this information is available in the Java timezone database.

Saxon's support for XOM is extended: there is now a net.sf.saxon.xom.XOMWriter class that allows the output of a query or transformation to be captured directly in the form of a XOM document. The class implements Receiver and Result; an instance of this class can therefore be used directly as an argument to the JAXP Transformer.transform() method or the method.

A new extension function saxon:unparsed-entities() is available, allowing the application to obtain a list of the names of the unparsed entities declared in a document.

The elements in the SQL extension now by default use the namespace xmlns:sql="". They can however be registered under a different namespace if required. The extension is not available unless it is registered with the Configuration, either using the API Configuration.setExtensionElementNamespace(), or using a configuration file. Either way, Saxon-PE or higher is required (although the extension itself is open source code).

The implementation of the sql:insert and sql:update extension instructions has been simplified. This may result in some error conditions being detected that were not detected before. The names of tables and columns supplied to these instructions are now validated against SQL rules; if the names are not valid against SQL rules and are not already quoted then they will be enclosed in double-quotation marks.

The saxon:path() extension function now accepts a node as an argument. Previously it worked only on the context node.