System Programming Interfaces
The venerable and overgrown Controller class has been split into two: all
functionality that applies to XSLT only has been moved into a subclass, XsltController. The transform()
method (which at one time implemented the JAXP Transformer.transform()
interface) has
been dropped; instead the specific entry points such as XsltController.applyTemplates()
and XsltController.callTemplate()
must be used. These methods in turn have been changed
so that they now deliver the raw result of the transformation (without the sequence normalization
process that wraps the result into a document node). Any wrapping that is required is now performed
in the s9api API layer (classes XsltTransformer and Xslt30Transformer), and
is specific to the type of Destination
supplied.
The Configuration class no longer has a finalize()
method
(because this is deprecated in Java 9). The only action of the finalize()
method was to ensure that any
log file was closed; an application that supplies a logger that needs closing is now responsible for ensuring
that it is closed after use, which can be achieved if convenient by calling Configuration.close()
.
A number of key interfaces such as Sequence, SequenceIterator, Receiver, and NodeInfo now have default implementations of some of their methods, making it easier to define new implementations of these interfaces. In some cases this has led to removal of the static helper methods that previously were used to avoid code duplication.