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.

Michael H. Kay
Saxonica Limited
9 February 2005