根据lxml文档,“DTD会根据解析文档的DOCTYPE自动检索。您只需要使用启用了DTD验证的解析器即可。”
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)