Saxonica.com

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.

Next