XML验证:cvc-complex-type.2.4.a:以元素{..}开头的无效内容

问题描述:

我试图验证三个XML文件,其中每个文件都得到相同的两个错误。用于验证的方案是使用Oxygen 18.0使用方案生成功能(具体使用三个XML)创建的。XML验证:cvc-complex-type.2.4.a:以元素{..}开头的无效内容

的错误是:

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**> 

我不知道它是否是由于错误的方案(目前存在阻止我上传它的问题),或者如果文档本身导致e错误。所有文件都是格式良好的。 其他消息来源表示,通过将默认值更改为elementFormDefault="qualified"可以解决问题,但我的XML已经包含了该问题。我希望这个错误要么与targetNamespace="http://www.tei-c.org/ns/1.0"(这是XML的一部分)相关联,要么与错误的元素顺序关联。这也可能与minOccurs="0"有关 - 但就此而言,我已经阅读了太多的主题,导致我失去了一个明智的解决方案。

显而易见的是三重检查:标签在端

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

此正确闭合上面使用的XML:http://pastebin.com/USKZxXM4

div的内容模型允许它是空的,或由的divp序列:

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

鉴于你的XML有一个div元素与div孩子和一个p儿童的另一个div元素,你反而应该让div的内容模型是可选的一系列子:

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

如果双方可能存在,或任一的选择:

<xs:choice> 
    <xs:element ref="ns1:div"/> 
    <xs:element ref="ns1:p"/> 
    </xs:choice> 

如果只有一个可能存在。

+0

这很合理,工作得很好。谢谢! – user80407