XML架构+complexType元素+序列的替代项



我想创建一个XML架构(XSD文件)来应用于XML文档。让我们考虑以下XML文档:

<root>
    <a />
    <b />
    <c />
    <a />
    <a />
    <b />
</root>

在遵守以下所需约束的情况下:

  1. <root>是根元素
  2. <a>,<b>和<c>元素可以出现无限次
  3. <a>,<b>和<c>元素不分组。例如,元素可以在<b>元素

如果我必须创建一个XML模式来应用于示例XML文档,我将从以下内容开始:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="http://doesnotmatter.com/"
            xmlns="http://doesnotmatter.com/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="root"
                min="1"
                max="1">
        <complexType>
            <!-- ? -->
        </complexType>
    </xs:element>
</xs:schema>

我不知道如何填充<complexType>元素
我不能使用<sequence>元素,因为第三个约束
我怎样才能实现我的模式来尊重所有3个约束。

编辑

选择因素是我问题的关键
以下是对应于我上述需求的XML模式:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="http://doesnotmatter.com/"
            xmlns="http://doesnotmatter.com/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="a" />
        <xs:element name="b" />
        <xs:element name="c" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

所以,root的模型是:从这些可能性中反复选择:a、b、c。是这样吗?关键词是choose as in choice。也许我错过了什么,但答案似乎很明显。

最新更新