B2MML XML验证返回没有可用于验证根

时间:2015-11-23 21:27:17

标签: python xml validation xsd

我正在尝试使用lxml针对B2MML架构(多个XSD文档)验证一个简单的XML文档。 lxml返回"没有可用于验证根的匹配全局声明。"之前已发布此类问题,但没有一个解决方案似乎有效。

需要验证的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<MaterialLot xmlns="http://www.w3.org/2001/XMLSchema">
    <ID>000010002377</ID>
</MaterialLot>

用于验证文档的代码:

def validate_xml(xmlschemafile, xmlfilename):

    with open(xmlschemafile, 'r') as f:
        schema_root = etree.XML(f.read())

    schema = etree.XMLSchema(schema_root)
    xmlparser = etree.XMLParser(schema=schema)

    try:
        with open(xmlfilename, 'r') as f:
            etree.fromstring(f.read(), xmlparser)
        return True
if __name__ == '__main__':
    validate_xml(xmlschema, filename)

这里可以找到B2MML模式文件: https://github.com/werdnav/b2mml-validation

XSD名称空间为&#39; http://www.w3.org/2001/XMLSchema&#39; (从XSD文档中读取)与XML示例完全匹配。但是,验证器代码(上面)返回:

Element '{http://www.w3.org/2001/XMLSchema}MaterialLot': No matching global declaration available for the validation root.

这是非常奇怪的,因为MaterialLot是全局声明的。

0 个答案:

没有答案