我正在尝试创建一个模式并遇到了这个问题,尽管我找到了一个应该有效的解决方案(XSD - 如何允许任意顺序的元素任意多次?)在我的情况下它没有。
<xsd:element name="foo">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="p" maxOccurs="unbounded"/> *--element p is complex--*
<xsd:element ref="f" maxOccurs="unbounded"/> *--element f is complex--*
<xsd:element ref="summary"/>
</xsd:choice>
<xsd:attribute ref="type"/>
</xsd:complexType>
</xsd:element>
使用它来验证下面的 xml 会返回错误“意外的子元素”:
<foo type="###">
<p type="###">
<pr date="##/##/##" amount="###"/>
<pr date="##/##/##" amount="###"/>
</p>
<f type="###">
<fr date="##/##/##" factor="###"/>
<fr date="##/##/##" factor="###"/>
</f>
<p type="###">
<pr date="##/##/##" amount="###"/>
<pr date="##/##/##" amount="###"/>
</p>
<f type="###">
<fr date="##/##/##" factor="###"/>
<fr date="##/##/##" factor="###"/>
</f>
<summary>
<p_summary date="##/##/##" p="####" dis="###" ......./>
<p_summary date="##/##/##" p="####" dis="###" ......./>
<p_summary date="##/##/##" p="####" dis="###" ......./>
</summary>
</foo>
我没有列出 pf 和 summary 的定义,但它们都包含各自元素(fr、pr、p_summary)的 maxOccurs="unbounded"。