Package net.sf.saxon.s9api
Interface ExtensionFunction
public interface ExtensionFunction
This is an interface for simple external/extension functions. Users can implement this
interface and register the implementation with the
Processor
; the function will
then be available for calling from all queries, stylesheets, and XPath expressions compiled
under this Processor.
Extension functions implemented using this interface are expected to be free of side-effects,
and to have no dependencies on the static or dynamic context. A richer interface for extension
functions is provided via the ExtensionFunctionDefinition
class.
-
Method Summary
Modifier and TypeMethodDescriptionCall the function.Declare the types of the argumentsgetName()
Return the name of the external functiondefault SequenceType
Declare the result type of the external function.
-
Method Details
-
getName
QName getName()Return the name of the external function- Returns:
- the name of the function, as a QName.
-
getResultType
Declare the result type of the external function. The default for this method returns the typeitem()*
. Returning a more precise type enables Saxon to do better static type checking, and to avoid run-time conversions.- Returns:
- the result type of the external function. Saxon will check at run-time that
the actual value returned by the
call(net.sf.saxon.s9api.XdmValue[])
method is an instance of this type.
-
getArgumentTypes
SequenceType[] getArgumentTypes()Declare the types of the arguments- Returns:
- an array of SequenceType objects, one for each argument to the function, representing the expected types of the arguments
-
call
Call the function. The implementation of this method represents the body of the external function.- Parameters:
arguments
- the arguments, as supplied in the XPath function call. These will always be of the declared types. Arguments are converted to the required types according to the standard XPath function conversion rules - for example, if the expected type is atomic and a node is supplied in the call, the node will be atomized- Returns:
- the result of the function. This must be an instance of the declared return type; if it is not, a dynamic error will be reported
- Throws:
SaxonApiException
- can be thrown if the implementation of the function detects a dynamic error
-