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
的内容模型允许它是空的,或由的div
和p
序列:
<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>
如果只有一个可能存在。
这很合理,工作得很好。谢谢! – user80407