我有一个Schema XSD文件,其中包含序列中列出的元素。问题是Sequence强制XML文件列出顺序中的元素。现在,我想使用选择标记。但是根据 xml规范,选择只允许声明中包含的一个元素出现在包含元素中。此外,我无法使用所有标记,因为我希望出现多次。但是我要 在无序模式中显示所有 A,B,C,D和E 。有什么建议吗?
<xsd:complexType>
<xsd:sequence>
<xsd:element name="A" />
<xsd:element name="B" />
<xsd:element name="C" />
<xsd:element name="D" />
<xsd:element name="E" />
</xsd:sequence>
</xsd:complexType>
<a>a</a>
<b>b</b>
<c>c</c>
<d>d</d>
<e>e</e>
答案 0 :(得分:0)
此XSD,
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="r">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="A" />
<xsd:element name="B" />
<xsd:element name="C" />
<xsd:element name="D" />
<xsd:element name="E" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
会将A
到E
的元素作为r
的子级以任意顺序和任意次数进行验证。
xsd:choice
元素的出现约束允许选择本身重复指定的次数。因此,您可以在子元素之间进行零次选择,并获得r
的空内容模型。有一次,你可以选择任何一个孩子。您可以第二次选择您第一次做的同一个孩子或任何其他孩子。如您所见,此持续操作允许任意数量的子元素以任何顺序出现。
以下所有XML文档对上述XSD都有效:
<r></r>
<r><A/><A/></r>
<r><A/><A/><A/></r>
<r><A/><B/><A/><C/><A/><D/><A/><E/><A/></r>
<r><E/><D/><C/><B/><A/></r>