纯Python XSLT库

21

有没有一种纯Python的XSLT库?

在我需要支持的某些平台上安装libxml2+libxslt或任何类似的C库是一个问题。

我只需要基本的XSLT支持,速度不是主要问题。

5个回答

10

目前很遗憾,没有纯Python的XSLT处理器。如果您需要更具平台独立性的东西,您可能想使用基于Java的XSLT处理器,如Saxon。4Suite正在开发纯Python的XPath解析器,但似乎还需一段时间才能推出纯XSLT处理器。也许最好利用Python的功能能力来尝试近似现有样式表,或者研究使用Java的可行性。


7
我认为您无法在CPython中完成此操作:没有纯Python的XSLT实现。但是,在使用JVM的内置XSLT API时,您可以轻松地在Jython中完成它。我为在Google AppEngine上执行此操作编写了一篇博客文章,但是给出的代码应该在任何情况下都适用于Jython。以下是相关链接:http://jython.xhaus.com/transforming-with-xslt-on-google-appengine-and-jython/。希望对您有所帮助。 Alan.

1

还有http://lxml.de/

"lxml是Python语言中用于处理XML和HTML最丰富功能、易于使用的库。"


1
嗯,声称自己是“功能最丰富、易于使用”的营销说辞似乎有点过分了(除非你已经对所有选项进行了详尽的研究,并自行得出了这个结论)。 - Rob
1
lxml 应该只是另一个 Python 绑定,绕过我们正在尝试避免使用的相同 C 库:"lxml XML 工具包是 libxml2 和 libxslt 的 Pythonic 绑定。" - Steven D.
此外,引用lxml的安装页面所述:“除非您使用静态二进制分发(例如来自Windows二进制安装程序),否则lxml需要安装libxml2和libxslt…” - Steven D.

1

4suite的部分内容是用C编写的,不确定这是否重要。 - Torsten Marek
是的,这很重要。我正在寻找一个纯Python实现。在某些平台上,我不想/无法编译(更不用说安装!)任何C代码。 - Andy Balaam

1

如果您只需要基本支持,并且您的XML不太复杂,请考虑从方程式中删除XSLT元素,只使用DOM / SAX解析器。

这里有一些来自PythonInfo Wiki的信息:

[DOM]吸收整个XML文件,将其保存在内存中,并让您使用它。另一方面,Sax会在通过文件的每个步骤时发出事件。

你怎么看?


不错的想法,但在这种情况下,我有现有的XSLT,我想在无法编译任何代码或安装库的平台上使用它们。 - Andy Balaam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接