S9API interface

A new method Xslt30Transformer.transform() has been added, supporting the traditional style of XSLT invocation in which a source document acts as both the global context item and the initial match selection.

The mechanism for creating a MessageListener has changed, to accommodate multi-threaded transformations. Instead of calling XsltController.setMessageEmitter() to provide a destination for messages, applications should call XsltController.setMessageFactory() to provide a factory object that is called on each invocation of xsl:message to supply a destination for that particular message. The old interface remains supported provided that multithreading is disabled (which is always the case in Saxon-HE).

In s9api, Steps.path() now returns a Step<? extends XdmNode> rather than Step<? extends XdmItem>. This reduces the need for unsafe casting operations.