0

lxml を使用して Python で XML ドキュメントを検証しようとしています。

DTD 検証は、xmlns 名前空間の存在をエラーとして扱います。

このスクリプト例

from lxml import etree
from StringIO import StringIO

dtd = etree.DTD(StringIO("<!ELEMENT a EMPTY>"))
root = etree.XML("<a></a>")
print(dtd.validate(root))
root = etree.XML('<a xmlns:sru="http://www.loc.gov/zing/srw/"></a>')
print(dtd.validate(root))
print dtd.error_log

収量

True
False
<string>:1:0:ERROR:VALID:DTD_UNKNOWN_ATTRIBUTE: No declaration for attribute xmlns:sru of element a

xml 名前空間について不平を言うことなく、DTD に対してドキュメントを検証する lxml を使用するにはどうすればよいですか?

4

1 に答える 1

2

DTD の a 要素に xmlns:sru 属性を定義する必要があります。現在はありません。

<!ELEMENT a EMPTY>
<!ATTLIST a xmlns:sru CDATA #IMPLIED>

これは、要素 a の xmlns:sru のオプションの CDATA 属性を定義します。

于 2012-10-21T15:17:25.643 に答える