我确信这很简单,但我收到的验证错误是我无法解决的。如果我只有一个link_text
和href
元素出现,则验证正常。如果我包含多个link_text
和href
元素,则会收到验证错误:
cvc-complex-type.2.4.a:从元素'link_text'开始发现无效内容。其中一个是{{http://www.codeshop.ca/ns“:href}'。
我把它们都设置为无限制,所以我很难搞清楚这一点。我已经包含了代码的链接:
https://gist.github.com/anonymous/d04d007056b10a76b251
非常感谢任何帮助!
答案 0 :(得分:0)
您已在架构中使用sequence
内容模型组。 要求您按照指定的确切顺序使用元素。
您的架构说:
<!--Menu containing links -->
<element name="menu">
<complexType>
<sequence>
<element name="link_text" maxOccurs="unbounded" />
<element name="href" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
这意味着在<menu>
内您首先需要指定一个或多个<link_text>
元素,然后指定一个或多个<href>
元素。 (并且您不能拥有字符内容,因此您需要从输入文件中删除“+”)
作为参考,由于您没有直接将其包含在您的问题中,只有链接,输入中导致错误的部分是:
<menu>
<link_text>Vice Fightland Magazine</link_text>
<href>http://www.vice.com</href>
+
<link_text>MMAJunkie</link_text>
<href>http://www.mmajunkie.com</href>
</menu>
看起来您希望每个link_text和href都属于一起。除了需要删除的“+”外,您还可以将其建模为一系列序列:
<element name="menu">
<complexType>
<sequence>
<sequence maxOccurs="unbounded">
<element name="link_text" />
<element name="href" />
</sequence>
</sequence>
</complexType>
</element>
但是我个人会将输入更改为:
<menu>
<link>
<text>Vice Fightland Magazine</text>
<href>http://www.vice.com</href>
</link>
<link>
<text>MMAJunkie</text>
<href>http://www.mmajunkie.com</href>
</link>
</menu>
它更清楚地表明文本和href属于一起,它可以为它创建一个complexType,您可以在多个位置引用,以及xml模式支持复杂类型的其他方式(而不仅仅是模型组) )。