如何聪明地重写一个曾用XSLT的Python脚本?
我有一个旧的Python应用,它曾经使用XSLT来转换一些XML数据(有两种类型的XML文件和它们各自的XSLT文件),最终生成HTML输出。
我想把这个应用移植到App Engine上,但很遗憾,App Engine的Python版本不支持XSLT。
有没有简单的方法可以重写我的代码,而不需要手动解析和检查XML输入中的特定标签呢?
换句话说,你有没有什么通用的方法可以做到这一点?
谢谢,抱歉我的英语不好!
3 个回答
你可以使用 lxml 来进行 XSLT 转换,而且 lxml 应该可以在较老的 Python 版本上运行(网站上说它支持从 2.3 到 3.2 的版本)。
如果你的XSLT代码不是特别复杂,那么把它们转换成Python可能并不会太难。你可以使用ElementTree的iterparse功能来实现这个转换,具体可以参考这个链接:http://effbot.org/zone/element-iterparse.htm,还有这个链接也很有帮助:http://www.dalkescientific.com/writings/diary/archive/2006/11/06/iterparse_filter.html。
你需要把XSLT模板重写成Python函数,这样在解析时遇到元素“事件”时就可以调用这些函数。此外,你可能还需要保存一些文档状态,以便处理某些特定的xsl:template/@match模式,但整体来说,这个过程应该不会太麻烦。
很遗憾,目前在纯Python中没有可用的XSLT实现。你可以考虑把你的Python代码改成在Jython上运行,这样就能使用Java的XSLT实现。关于这个方法,可以参考这篇博客文章。
你需要自己决定,把现有代码移植并测试到Jython上,是否比自己写一个特定用途的XML解析器/转换器更好。