Package net.sf.saxon.functions

This package provides implementations of all the core functions available for use in XPath expressions. This includes all the functions defined in the XPath 2.0 Functions and Operators specification, as well as the additional functions defined for use in XSLT. The package also includes Saxon extension functions. Most of these are in a single class Extensions, but some of the more complex functions are in their own classes, for example Evaluate implements saxon:evaluate().

There is one class for group of closely-related functions. These all inherit from the class net.sf.saxon.expr.Function. The class StandardFunction is used to map a function name to its implementation; it contains tables of information describing the signature of each function, so that the type-checking code is completely generic.

The package also contains machinery for defining user extension functions. A collection of functions is represented by a FunctionLibrary object. There are several standard function libraries available, covering core functions, Saxon extension functions constructor functions, and user extension functions: each category is covered by a subclass of FunctionLibrary, and there is also a FunctionLibraryList that represents the total collection of functions in these individual libraries. The JavaExtensionLibrary contains the logic for binding Java extension functions given their name and arity and the types of their arguments. The class ExtensionFunctionCall contains the run-time logic for converting XPath values to the required Java types, and for converting the result back to an XPath value.

These classes, although public, will not normally be used directly by user-written Java applications. There are a few exceptions, such as ResolveURI which deliberately expose functionality equivalent to the XPath function in a static method.