XML验证:cvc-complex-type.2.4.a:从元素{..}开始找到的内容无效

时间:2016-11-16 00:04:46

标签: xml xsd xsd-validation xml-validation

我试图验证三个XML文件,每个文件都得到相同的两个错误。用于验证的方案是使用方案生成功能(特别是使用三种XML)使用Oxygen 18.0创建的。

错误是:

cvc-complex-type.2.4.a: Invalid content was found starting with element '{"http://www.tei-c.org/ns/1.0":p}'. One of '{"http://www.tei-c.org/ns/1.0":div}' is expected. 

cvc-complex-type.2.4.b: The content of element 'div' is not complete. One of '{"http://www.tei-c.org/ns/1.0":p}' is expected.

它们总是引用以下元素:** **

<?xml version="1.0" encoding="utf-8"?>
<text rend="Section" xml:lang="kat">    
        <body>
            <**div** type="Content" n="1">
        <div type="Section" n="1">
            <**p**>

我不确定是否是由于错误的方案(现在是阻止我上传它的问题)或者文档本身是否导致错误。然而,所有文件都是格式良好的。 其他消息来源称,通过将Default更改为elementFormDefault="qualified"来修复它,但我的XML已经包含了。我希望错误要么与targetNamespace="http://www.tei-c.org/ns/1.0"(XML的一部分)相关联,要么与错误的元素顺序相关联。它也可能与minOccurs="0"有关 - 但至于这一点,我已经阅读了很多线索,我已经忘记了一个合理的解决方案。

显而易见的是三重检查:标签在最后正确关闭

            </div></div>    
        </body>
    </text>

这是上面使用的XML:http://pastebin.com/USKZxXM4

1 个答案:

答案 0 :(得分:1)

quit.triggered.connect(self.close) 的内容模型允许它为空或由divdiv的序列组成:

p

鉴于您的XML有一个 <xs:sequence minOccurs="0"> <xs:element ref="ns1:div"/> <xs:element ref="ns1:p"/> </xs:sequence> 元素与div子元素和另一个div元素与div子元素,您应该使p& #39; s内容模型是一系列可选子项:

div

如果两者都存在,或者选择:

  <xs:sequence>
    <xs:element ref="ns1:div" minOccurs="0"/>
    <xs:element ref="ns1:p" minOccurs="0"/>
  </xs:sequence>

如果只有一个可能存在。