使用 lxml python 库加载无效的机器人框架 XML 模式(xsd)
Load invalid Robot Framework XML Schema (xsd) using lxml python library
我正在尝试使用官方提供的 XML schema:
验证 Robot Framework 中的 output.xml 文件
对于 Python 中的 xml 验证,我正在使用 lxml library。
def validate_xml_file(schema, filename: str):
log.info("Validating XML file: {}".format(filename))
xsd_doc = etree.parse(schema)
xsd = etree.XMLSchema(xsd_doc)
xml = etree.parse(filename)
result = xsd.assertValid(xml)
我收到以下错误:
File "src/lxml/xmlschema.pxi", line 86, in lxml.etree.XMLSchema.__init__
lxml.etree.XMLSchemaParseError: Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1)., line 19
正如您在 Robot Framework xsd 文件中看到的那样,第 19 行是:
<xs:element name="kw" type="kw" maxOccurs="2" minOccurs="0"/>
这意味着 macOccurs="2" 存在问题。你知道一些"nice"方法,如何忽略这个规则吗?
谢谢。
好的,我发现了问题。 lxml 不支持 XSD 1.1,它只支持 XSD 1.0。所以我刚刚使用了 RobotFramework XSD 1.0,现在它按预期工作了。
我正在尝试使用官方提供的 XML schema:
验证 Robot Framework 中的 output.xml 文件对于 Python 中的 xml 验证,我正在使用 lxml library。
def validate_xml_file(schema, filename: str):
log.info("Validating XML file: {}".format(filename))
xsd_doc = etree.parse(schema)
xsd = etree.XMLSchema(xsd_doc)
xml = etree.parse(filename)
result = xsd.assertValid(xml)
我收到以下错误:
File "src/lxml/xmlschema.pxi", line 86, in lxml.etree.XMLSchema.__init__
lxml.etree.XMLSchemaParseError: Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1)., line 19
正如您在 Robot Framework xsd 文件中看到的那样,第 19 行是:
<xs:element name="kw" type="kw" maxOccurs="2" minOccurs="0"/>
这意味着 macOccurs="2" 存在问题。你知道一些"nice"方法,如何忽略这个规则吗?
谢谢。
好的,我发现了问题。 lxml 不支持 XSD 1.1,它只支持 XSD 1.0。所以我刚刚使用了 RobotFramework XSD 1.0,现在它按预期工作了。