我正在尝试使用官方提供的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,现在它按预期工作。