XML ファイルと別のファイルに XML スキーマがあり、XML ファイルがスキーマに準拠していることを検証したいと考えています。Pythonでこれを行うにはどうすればよいですか?
標準ライブラリを使用したいのですが、必要に応じてサードパーティのパッケージをインストールできます。
XML ファイルと別のファイルに XML スキーマがあり、XML ファイルがスキーマに準拠していることを検証したいと考えています。Pythonでこれを行うにはどうすればよいですか?
標準ライブラリを使用したいのですが、必要に応じてサードパーティのパッケージをインストールできます。
XSDファイルを使用することを意味していると思います。驚くべきことに、これをサポートする Python XML ライブラリは多くありません。ただし、lxml はそうします。lxmlで検証を確認します。このページには、lxml を使用して他のスキーマ タイプで検証する方法もリストされています。
「純粋なpython」ソリューションについては、パッケージインデックスリスト:
http://pyxb.sourceforge.net/にあるPyXBパッケージは、XMLスキーマドキュメントからPythonの検証バインディングを生成します。ほぼすべてのスキーマ構造を処理し、複数の名前空間をサポートします。
lxml は etree.DTD を提供します
http://lxml.de/api/lxml.tests.test_dtd-pysrc.htmlのテストから
...
root = etree.XML(_bytes("<b/>"))
dtd = etree.DTD(BytesIO("<!ELEMENT b EMPTY>"))
self.assert_(dtd.validate(root))