def transform_xml(xml: bytes) -> str: with saxonc.PySaxonProcessor(license=False) as proc: base_dir = os.getcwd() xslt_path = os.path.join(base_dir, "test.xslt") xslt_proc = proc.new_xslt30_processor() node = proc.parse_xml(xml_text=xml.decode("utf-8")) result = xslt_proc.transform_to_string(stylesheet_file=xslt_path, xdm_node=node) return result
def __init__(self): self.saxon_processor = saxonc.PySaxonProcessor(license=False)
def saxon_processor() -> saxonc.PySaxonProcessor: return saxonc.PySaxonProcessor(license=False)
import saxonc with saxonc.PySaxonProcessor(license=False) as proc: print("Test Python") print(proc.version) #print(dir(proc)) xdmAtomicval = proc.make_boolean_value(False) xsltproc = proc.new_xslt_processor() document = proc.parse_xml( xml_text= "<out><person>text1</person><person>text2</person><person>text3</person></out>" ) xsltproc.set_source(xdm_node=document) xsltproc.compile_stylesheet( stylesheet_text= "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='2.0'> <xsl:param name='values' select='(2,3,4)' /><xsl:output method='xml' indent='yes' /><xsl:template match='*'><output><xsl:value-of select='//person[1]'/><xsl:for-each select='$values' ><out><xsl:value-of select='. * 3'/></out></xsl:for-each></output></xsl:template></xsl:stylesheet>" ) xsltproc.set_jit_compilation(True) output2 = xsltproc.transform_to_string() print(output2) print('test 0 \n') xml = """\ <out> <person>text1</person> <person>text2</person> <person>text3</person> </out>""" xp = proc.new_xpath_processor()