使用Python转换DTD

时间:2009-12-29 15:56:55

标签: python dtd dtd-parsing

我正在寻找一个库来帮助我使用Python解析和转换DTD。到目前为止我唯一发现的是xmlproc,但这似乎很古老,似乎不支持DTD的序列化。 Java有this但我更喜欢Python解决方案。

编辑:通过DTD的“序列化”我的意思是理想情况下我希望能够将DTD解析为某种Python结构,对该结构进行操作然后写出结果回到DTD。

2 个答案:

答案 0 :(得分:0)

我不知道DTD的端到端处理器,但我再一次很少使用DTD,所以这并不奇怪。

Amara可以解析DTD,但我不知道您可以对它们进行什么级别的访问,或者结果是否可以序列化。我认为他们可以,但这不是基于现实。 libxml2,在Python中以lxml的形式提供,是值得研究的其他内容,但我对此的经验更少。从libxml文档中可以看出,您可以访问完整的DTD。

另一种可能性是使用one of many programs将DTD转换为XSD,然后使用常规XML处理器来操作树,并将其返回到DTD。我担心可能会有多么有损。

在难度越来越高的情况下,如果您要为DTD语法自己编写解析器,请考虑PyParsingPLY

答案 1 :(得分:0)

您可能需要考虑将DTD转换为基于XML的格式之一。此时,您可以使用ElementTree或您喜欢的任何XML工具包来处理它。

我在RelaxNG方面有很好的经验,相当简洁明了。其网站上有一个转换工具列表:http://relaxng.org/#conversion

如果您更喜欢XML Schema,可以使用以下内容:http://www.w3.org/XML/Schema

如果您正在处理第三方文档或DTD,这可能对您不起作用。如果它在内部,请试一试。基于XML的模式使用起来更加愉快。