Project

Profile

Help

Bug #5287

closed

How to use XPath system function from Python with SaxonC 11.1

Added by Martin Honnen almost 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Category:
Python
Start date:
2022-02-05
Due date:
% Done:

100%

Estimated time:
Applies to branch:
Fix Committed on Branch:
Fixed in Maintenance Release:
Found in version:
11.1
Fixed in version:
11.2
SaxonC Languages:
SaxonC Platforms:
SaxonC Architecture:

Description

I am trying to figure a way how to use and call an XPath function from Python with Saxon 11.1. The Python API shows a function get_system_function at https://www.saxonica.com/saxon-c/doc11/html/saxonc.html#PyXdmFunctionItem without showing the possible arguments. It is also not clear whether it is supposed to be static (as the correspondent C++ method seems to be) or an instance method.

I have tried to call it/access it directly as PyXdmFunctionItem.get_system_function, but that fails with "TypeError: descriptor 'get_system_function' for 'saxonc.PyXdmFunctionItem' objects doesn't apply to a 'saxonc.PySaxonProcessor' object"; trying to call it as PyXdmFunctionItem().get_system_function fails in the Cython code:

from saxonc import *

with PySaxonProcessor(license=True) as proc:
    print("Test SaxonC on Python")
    print(proc.version)
    
    parse_json = PyXdmFunctionItem().get_system_function(proc, '{http://www.w3.org/2005/xpath-functions}parse-json', 1)
    
    xdmItem = parse_json.call(proc, [proc.make_string_value('[1,2,3]')])

gives

Traceback (most recent call last):
  File "C:\Users\marti\OneDrive\Documents\xslt\blog-xslt-3-by-example\saxonc-11.1-python\json-processing\parse-json-test1.py", line 7, in <module>
    parse_json = PyXdmFunctionItem().get_system_function(proc, '{http://www.w3.org/2005/xpath-functions}parse-json', 1)
  File "saxonc.pyx", line 3968, in saxonc.PyXdmFunctionItem.get_system_function
    c_func = self.derivedfptr.getSystemFunction(proc.thisptr, name, arity)
TypeError: expected bytes, str found

Please register to edit this issue

Also available in: Atom PDF