Internal changes
The Loader
class has been removed, and its methods have become instance-level methods
on the Configuration
object. The Configuration
has a new method
setClassLoader()
which can be used to set the ClassLoader
that Saxon
will use for all dynamic loading. There is another method of the same name on the Controller
object, which applies locally to one transformation or query thread.
This is designed to help prevent problems that arise in environments such as Eclipse that
have their own customized class loader: when Eclipse loads a class using one class loader, and Saxon loads
it using a different class loader, the class hierarchy is not fixed up properly and a ClassCastException
can result.
The info
argument to the MappingFunction.map()
interface has been dropped.
Instead, mapping functions that require context information are now implemented as classes that can be
instantiated at run time and initialized with the relevant information. This is a cleaner design with better type
safety, better control over thread-safety, and less overhead for mapping iterators that don't require this
context information.
The code for wrapping a sequence (used with the XQuery -wrap option) has been refactored, so that it can now be used as a component on any push pipeline, and no longer requires the input sequence or output document to be built as an in-memory document.