繁体   English   中英

在Python中使用lxml / objectify针对xsd验证/解析xml文件时出错

[英]Error validating/parsing xml file against xsd with lxml/objectify in Python

在Python / Django中,我需要根据给定的XMLSchema解析和目标化.xml文件,该XMLSchema由以以下方式相互引用的三个.xsd文件组成:

schema3.xsd(指的是schema1.xsd)

schema2.xsd(引用schema1.xsd)

schema1.xsd(引用schema2.xsd)

xml模式导入

为此,我使用下面的代码段,这些代码段已经与两个xml / xsd文件(其中.xsd是“独立的”,没有引用其他.xsd的)一起使用时已经测试过成功:

import lxml
import os.path
from lxml import etree, objectify
from lxml.etree import XMLSyntaxError

def xml_validator(request):

    # define path of files
    path_file_xml = '../myxmlfile.xml'
    path_file_xsd = '../schema3.xsd'    

    # get file XML
    xml_file = open(path_file_xml, 'r')
    xml_string = xml_file.read()
    xml_file.close()

    # get XML Schema
    doc = etree.parse(path_file_xsd)
    schema = etree.XMLSchema(doc)

    #define parser
    parser = objectify.makeparser(schema=schema)

    # trasform XML file
    root = objectify.fromstring(xml_string, parser)
    test1 = root.tag

    return render(request, 'risultati.html', {'risultato': test1})

不幸的是,我被上面描述的多个.xsd遇到的以下错误所困扰:

复杂类型'ObjectType':内容模型不确定。

请求方法:GET请求网址: http//127.0.0.18000 / xml_validator

Django版本:1.9.1异常类型:XMLSchemaParseError异常

值:复杂类型'ObjectType':内容模型不确定,第80行

有什么想法吗?

在此先非常感谢您提供解决此问题的任何建议或有用的提示...

干杯

更新23/03/2016

此处(以及该帖子的以下答案,因为它实际上超出了帖子的最大字符数),以找出问题的文件示例...

GitHub上的样本文件

我最好的猜测是您的XSD模型不遵守“ 唯一粒子归因”规则。 在查看其他内容之前,我将排除此情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM