xquery.xpath.ExternalFunctionObject
¶
The xpath.ExternalFunctionObject is the base class for native extension functions. Provides the function signature and the on_invoke callback method. Validated and aggregated in the xpath.ExternalFunctions.create method.
# An example extension function:
# -----------------------------
# Step 1: Derive from xpath.ExternalFunctionObject
class FunctionWithNativeCallback(xpath.ExternalFunctionObject):
'''
An native extension function for the transformation engine
providing implementation for the on_invoke method.
'''
def __init__(self):
# Step 2: Initialize the base class with the function signature.
super().__init__("Q{native-python-extension-functions}lorem($arg1 as xs:string) as xs:string")
# Step 3: Implement the on_invoke method.
def on_invoke(
self,
param_list: List[xpath.Sequence],
session: xpath.Session,
called_by: xpath.Instruction
) -> xpath.Sequence:
# Note: param_list contains the current arguments
# and can be None for 0 arity functions.
val = "lorem ipsum: "
val += str(param_list[0][0])
str_item = xpath.AtomicItem.create_from_string(val, session)
return xpath.Sequence.create_from_item(str_item)
# Step 4.Create a function library and set it on the compile options.
fn_lib, log = xpath.ExternalFunctions.create(session, FunctionWithNativeCallback())
- class xquery.xpath.ExternalFunctionObject(unicode signature)¶
The signature must match the grammar:
EQName “(” ParamList? “)” ( “as” SequenceType )?
The function name, parameter count, and the optional argument and return types will be inferred from the signature.
Attributes¶
- xquery.xpath.ExternalFunctionObject.signature¶
Methods¶
- xquery.xpath.ExternalFunctionObject.on_invoke(param_list, Session session, called_by)¶
For xpath function calls, override and implement the on_invoke callback method. The param_list provides position based access to the xpath.Sequence values of the function arguments. The returned xpath.Sequence is propagated to the executing expression.
def on_invoke( self, param_list: List[xpath.Sequence], session: xpath.Session, called_by: xpath.Instruction ) -> xpath.Sequence:
Note: the engine performs the implicit XPath type conversions on the param_list and on the returned sequence.
Arguments: param_list – a list of xpath.Sequence, the current argument values. session – the xpath.Session. called_by – an xpath.Instruction providing location information.
Returns: xpath.Sequence
Special methods¶
__eq__, __ge__, __gt__, __le__, __lt__, __ne__