lxmlのドキュメントによると、 "DTDは解析されたドキュメントのDOCTYPEに基づいて自動的に取得されるため、DTD検証が有効になっているパーサーを使用するだけです。自動XSD検証
http://lxml.de/validation.html#validation-at-parse-time
あなたがXMLスキーマに対して検証したい場合は、明示的に参照する必要があります。
私はこれがなぜ、これを行うことができるライブラリまたは機能があるかを知りたいと思っています。またはこれを自分自身で実現させる方法の説明。問題は、XSDを参照する方法がたくさんあるようだから、それらをすべてサポートする必要があります。
検証は問題ではありません。問題は、検証するスキーマを決定する方法です。理想的には、これはインラインスキーマも処理します。
更新:
ここでは一例です。
simpletest.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="name" type="xs:string"/>
</xs:schema>
simpletest.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<name xmlns="http://www.example.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org simpletest.xsd">foo</name>
私は次のような何かをしたいと思います:
>>> parser = etree.XMLParser(xsd_validation=True)
>>> tree = etree.parse("simpletest.xml", parser)
独自のフォーマットをどのように処理するかはわかりません。 – Marcin
Marcin、私はあなたのコメントを理解していません。おそらく、私はスキーマ検証の仕組みを理解していないでしょう。 – Jono
Windowsでこれをやっていますか? AFAIK Microsoftは、インラインスキーマをサポートする唯一の企業です。 –