使用saxon和python

Mal*_*iqf 6 python xslt saxon xslt-2.0

我需要使用python处理XSLT,目前我正在使用仅支持XSLT 1的lxml,现在我需要处理XSLT 2有没有办法在python中使用saxon XSLT处理器?

Mic*_*Kay 13

有两种可能的方法:

  1. 设置一个接受转换请求的HTTP服务,并通过从Java调用Saxon来实现它们; 然后,您可以通过HTTP从Python发送转换请求

  2. 使用Saxon/C产品,目前可在预发行版上获得:详情请访问:http://www.saxonica.com/saxon-c/index.xml

  • 我将Saxon/C包装在一个瘦的Boost-Python包装器中.提供一点C/C++并不困难 - 它只是Saxon网站上给出的C++示例的一些样板.您可以使用提供的PHP API作为如何构建Python API的指南.我之所以这么做是出于上述原因,没有XSLT 3支持原生Python.它对我来说效果很好 - 特别是它很快,不像分支子saxon进程或HTTP请求. (2认同)

小智 11

Saxon/C 版本 1.2.0 现已推出,支持 Python3 的 XSLT 3.0 查看详细信息:

http://www.saxonica.com/saxon-c/index.xml

  • 现在,这应该升级为正确答案。另请参见。/sf/ask/4134183791/ 了解分步说明。 (4认同)

小智 5

Saxon / C的Python接口正在开发中,值得一看:

https://github.com/ajelenak/pysaxon


Bru*_*uno 5

目前还没有,但您可以使用subprocess 模块来使用 Saxon 处理器:

import subprocess

subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])
Run Code Online (Sandbox Code Playgroud)