使用 lxml python 库加载无效的机器人框架 XML 模式 (xsd)



我正在尝试使用官方提供的XML模式验证机器人框架中的输出.xml文件:

对于Python中的xml验证,我正在使用lxml库。

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

正如您在机器人框架 xsd 文件中所看到的,第 19 行是:<xs:element name="kw" type="kw" maxOccurs="2" minOccurs="0"/>这意味着,macHappen="2">存在问题。你知道一些"好"的方法,如何忽略这个规则吗?

谢谢。

好的,我发现了问题。 lxml 不支持 XSD 1.1,它只支持 XSD 1.0。所以我刚刚采用了 RobotFramework XSD 1.0,现在它按预期工作。

最新更新