Extensibility mechanisms

Some performance improvements have been made to the code for calling Java extension functions. Thanks to Wolfgang Hoschek for providing these.

The ability to define user-written functions as memo functions is now available in XQuery as well as XSLT. In XQuery this is achieved by preceding the function decilaration with declare option saxon:memo-function 'true'. The effect is that the function caches its results, so if it is called again with the same arguments it returns the remembered result.

The use of external object types in namespace http://saxon.sf.net/java-type now reflects the Java type hierarchy. For example, if a variable is declared to accept a type of jt:java.util.List, then a value of type jt:java.util.ArrayList will be accepted, but a value of type jt:java.util.HashMap will not. The same applies to the new namespace http://saxon.sf.net/.net-type used for external .NET types.