当我使用lxml解析XML文档时,是否有办法使用外部目录文件针对其DTD验证该文档?我需要能够处理文档DTD中定义的固定属性.
您可以将目录添加到XML_CATALOG_FILES
环境变量:
os.environ['XML_CATALOG_FILES'] = 'file:///to/my/catalog.xml'
Run Code Online (Sandbox Code Playgroud)
看到这个帖子.请注意,条目XML_CATALOG_FILES
是以空格分隔的URL.您可以使用Python pathname2url
和urljoin
(with file:
)从路径名生成URL.
小智 1
你能给个例子吗?根据lxml验证文档,lxml可以处理DTD验证(在XML文档中或外部代码中指定)和系统目录,这涵盖了我能想到的大多数情况。
f = StringIO("<!ELEMENT b EMPTY>")
dtd = etree.DTD(f)
dtd = etree.DTD(external_id = "-//OASIS//DTD DocBook XML V4.2//EN")
Run Code Online (Sandbox Code Playgroud)