Erro ao analisar uma DTD usando lxml
stou tentando escrever um script de validação que validará o XML no NITF DThttp: //www.iptc.org/std/NITF/3.4/specification/dtd/nitf-3-4.dt. Baseado emesta postage Eu vim com o seguinte script simples para validar um documento XML NITF. Abaixo está a mensagem de erro que recebo quando o script é executado, que não é muito descritivo e dificulta a depuração. Qualquer ajuda é apreciad
#!/usr/bin/env python
def main():
from lxml import etree, objectify
from StringIO import StringIO
f = open('nitf_test.xml')
xml_doc = f.read()
f.close()
f = open('nitf-3-4.dtd')
dtd_doc = f.read()
f.close()
dtd = etree.DTD(StringIO(dtd_doc))
tree = objectify.parse(StringIO(xml_doc))
dtd.validate(tree)
if __name__ == '__main__':
main()
Mensagem de erro do Traceback:
Traceback (most recent call last):
File "./test_nitf_doc.py", line 23, in <module>
main()
File "./test_nitf_doc.py", line 16, in main
dtd = etree.DTD(StringIO(dtd_doc))
File "dtd.pxi", line 43, in lxml.etree.DTD.__init__ (src/lxml/lxml.etree.c:126056)
File "dtd.pxi", line 117, in lxml.etree._parseDtdFromFilelike (src/lxml/lxml.etree.c:126727)
lxml.etree.DTDParseError: error parsing DTD
Se eu mudar a linha:
dtd = etree.DTD(StringIO(dtd_doc))
Para
dtd = etree.DTD(dtd_doc)
O erro que recebo é:
lxml.etree.DTDParseError: failed to load external entity "NULL"