用Python转换DTD

2 投票
2 回答
1397 浏览
提问于 2025-04-15 17:27

我在找一个库,想用Python来解析和转换DTD(文档类型定义)。到目前为止,我只找到一个叫做 xmlproc 的东西,但感觉它有点老旧,而且似乎不支持DTD的序列化。还有一个 这个 是给Java用的,但我更希望能找到Python的解决方案。

编辑:我说的“序列化”DTD是指,我希望能把DTD解析成某种Python结构,然后对这个结构进行操作,最后再把结果写回到DTD中。

相关问题:

2 个回答

0

你可以考虑把你的DTD转换成一种基于XML的格式。这样的话,你就可以用ElementTree或者你喜欢的其他XML工具来处理它。

我之前用RelaxNG的经验不错,它比较简洁明了。你可以在它的网站上找到一些转换工具的列表:http://relaxng.org/#conversion

如果你更喜欢XML Schema,这里有一些资源可以参考:http://www.w3.org/XML/Schema

不过,如果你在处理第三方的文档或者DTD,这个方法可能不太适用。如果是自己内部的文件,可以试试看。基于XML的架构会更好用一些。

0

我不知道有没有一个完整的工具可以处理DTD(文档类型定义),不过我很少用到DTD,所以这也不奇怪。

Amara可以解析DTD,但我不太清楚你能获取到什么样的信息,或者结果是否可以保存下来。我猜应该可以,但这只是我的假设。还有一个叫libxml2的库,在Python中可以用lxml来使用,我对这个的了解更少。从libxml的文档来看,你应该能访问到完整的DTD。

另一个选择是把DTD转换成XSD(XML模式定义),可以用很多程序中的一个,然后用普通的XML处理工具来操作这个结构,最后再转换回DTD。我担心这样会丢失一些信息。

如果你想自己写一个解析器来处理DTD的语法,难度会逐渐增加,可以考虑PyParsing或者PLY

撰写回答