Python を使用して DTD を解析および変換するのに役立つライブラリを探しています。これまでに見つけたのはxmlprocだけですが、これは古いようで、DTD のシリアル化をサポートしていないようです。これはJava用ですが、私はPythonソリューションを好みます。
編集: DTD の「シリアル化」とは、理想的には、DTD をある種の Python 構造に解析し、その構造を操作して、結果を DTD に書き戻すことができるようにしたいということです。
DTD用のエンドツーエンドプロセッサについては知りませんが、DTDを使用することはめったにないので、驚くことではありません。
AmaraはDTDを解析できますが、DTDにアクセスできるレベルや、結果をシリアル化できるかどうかはわかりません。私は彼らができると思います、しかしそれは現実に基づいていません。libxml2は、Pythonでlxmlとして利用できるので、他に調査する必要がありますが、私はそれについての経験がさらに少ないです。libxmlのドキュメントから、完全なDTDにアクセスできるようです。
もう1つの可能性は、多くのプログラムの1つを使用してDTDをXSDに変換し、通常のXMLプロセッサーを使用してツリーを操作し、それをDTDに戻すことです。それがどれほど損失になるのか心配です。
難易度が高くなるにつれて、DTD文法用のパーサーを自分で作成する場合は、PyParsingまたはPLYを検討してください。
DTDをXMLベースの形式の1つに変換することを検討することをお勧めします。その時点で、ElementTreeまたは任意のXMLツールキットを使用して処理できます。
私はRelaxNGで良い経験をしました。これは、かなり簡潔でわかりやすいものです。そのサイトには変換ツールのリストがあります:http://relaxng.org/#conversion
XMLスキーマをご希望の場合は、次の情報を利用できます:http ://www.w3.org/XML/Schema
サードパーティのドキュメントまたはDTDを扱っている場合、これはうまくいかない可能性があります。社内の場合は、試してみてください。XMLベースのスキーマは、操作がはるかに快適です。