Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用LXML避免DTD验证_Python_Lxml_Dtd - Fatal编程技术网

Python:使用LXML避免DTD验证

Python:使用LXML避免DTD验证,python,lxml,dtd,Python,Lxml,Dtd,我正在以SGML格式解析2001年的USPTO专利。在每个文件的顶部,引用一个外部文件。不幸的是,此DTD似乎无效。有效性检查确认: Line 361 Error: A '(' character or an element type is required within declaration of element type "ADR". <!ELEMENT ADR - - (OMC?,STR*,CITY?,CNTY?,STATE?,CTRY?,PCODE?,EAD*,TEL*,FAX

我正在以SGML格式解析2001年的USPTO专利。在每个文件的顶部,引用一个外部文件。不幸的是,此DTD似乎无效。有效性检查确认:

Line 361
Error: A '(' character or an element type is required within declaration of element type "ADR".
<!ELEMENT ADR  - - (OMC?,STR*,CITY?,CNTY?,STATE?,CTRY?,PCODE?,EAD*,TEL*,FAX* ...
但是,我仍然立即得到一个错误,即第361行中的外部DTD无效。我怎样才能避免这个问题?我不是DTD的实现者,所以我不愿意修复它


问候

正如Chrono Kitsune已经指出的:问题在于xml与sgml的区别:DTD不是正确的xml DTD,因为它是sgml DTD


我建议首先将sgml文档转换为xml,例如使用。

看看我对关于xml和sgml之间差异的另一个问题的回答。XML DTD与SGML DTD不同,您使用的是XML解析器,它无法处理SGML提供的自由,主要是因为SGML允许诸如可选的结束标记(例如HTML中的p)之类的内容,而所有XML标记都必须正确关闭。
parser = etree.XMLParser(target=SimpleXMLHandler(), resolve_entities=False, load_dtd=dtd, dtd_validation=False, recover=True)