2009-12-29 30 views
1

我正在尋找一個庫來幫助我使用Python分析和轉換DTD。我迄今發現的唯一的東西是xmlproc,但這似乎很古老,似乎並不支持DTD的序列化。 Java有this,但我更喜歡Python解決方案。用Python轉換DTD

編輯:通過DTD的「序列化」我的意思是理想情況下我希望能夠將DTD解析爲某種Python結構,對該結構進行操作,然後將結果寫回DTD 。

+0

「DTD的序列化」? DTD不是正文嗎? 「DTD序列化」是什麼意思? – 2009-12-29 17:46:48

回答

0

我不知道DTD的端到端處理器,但我很少再使用DTD,所以這並不奇怪。

Amara可以解析DTD,但我不知道你可以訪問的級別是多少,或者結果是否可以序列化。我假設他們可以,但這不是基於現實。 libxml2,這是在Python中可用作爲lxml是別的東西來調查,但我有更少的經驗。從libxml文檔看來,您可以訪問完整的DTD。

另一種可能性是將DTD轉換爲XSD並使用one of many programs,然後使用常規XML處理器來操作樹並將其返回給DTD。我擔心這可能是多麼有損。

隨着難度的增加,如果您要爲DTD語法自己編寫解析器,請考慮PyParsingPLY

0

您可能會考慮將您的DTD轉換爲基於XML的格式之一。此時,您可以使用ElementTree或您喜歡的任何XML工具箱處理它。

我對RelaxNG有很好的體驗,它非常簡潔明瞭。還有的在其網站上的轉換工具列表:http://relaxng.org/#conversion

如果你喜歡的XML Schema,這裏是可用:http://www.w3.org/XML/Schema

如果你處理的第三方文件或DTD的,這可能不適合你。如果它在內部,請給它一個鏡頭。基於XML的模式更適合工作。