I need to process XSLT using python, currently I\'m using lxml which only support XSLT 1, now I need to process XSLT 2 is there any way to use saxon XSLT processor with pyth
If you're using Windows:
Download the zip file Saxon-HE 9.9 for Java from http://saxon.sourceforge.net/#F9.9HE and unzip the file to C:\saxon
Use this Python code:
import os
import subprocess
def file_path(relative_path):
folder = os.path.dirname(os.path.abspath(__file__))
path_parts = relative_path.split("/")
new_path = os.path.join(folder, *path_parts)
return new_path
def transform(xml_file, xsl_file, output_file):
"""all args take relative paths from Python script"""
input = file_path(xml_file)
output = file_path(output_file)
xslt = file_path(xsl_file)
subprocess.call(f"java -cp C:\saxon\saxon9he.jar net.sf.saxon.Transform -t -s:{input} -xsl:{xslt} -o:{output}")