XSD用于具有相同名称但属性值不同的重复元素

时间:2011-11-15 04:45:34

标签: xml xsd repeat

我正在尝试为以下XML代码段编写XSD。

<loop id="1000" name="loop 1000" />
<loop id="1000" name="loop 1000" />
<loop id="2000" name="loop 2000" />
<loop id="2000" name="loop 2000" />
<loop id="2000" name="loop 2000" />

我写了以下XSD

<xs:element name="loop" maxOccurs="3">
  <xs:simpleType>
    <xs:attribute use="required" fixed="1000" type="xs:string" name="id" />
  </xs:simpleType>
</xs:element>
<xs:element name="loop" maxOccurs="3">
  <xs:simpleType>
    <xs:attribute use="required" fixed="2000" type="xs:string" name="id" />
  </xs:simpleType>
</xs:element>

但这似乎在XML验证中失败了。

XML不在我的掌控之中。我该如何处理?

修改

我编写了一个xml解析器+生成器,并将收到的XML更改为

<_1000>...</_1000>
<_1000>...</_1000>
<_2000>...</_2000>
<_2000>...</_2000>
<_2000>...</_2000>

现在我可以轻松地为此编写XSD。

1 个答案:

答案 0 :(得分:1)

<xs:element name="loop" minOccurs="3" maxOccurs="3">
            <xs:simpleType>
                <xs:attribute use="required" fixed="1000" type="xs:string" name="id" />
                <xs:attribute use="required" fixed="loop 1000" type="xs:string" name="name" />
            </xs:simpleType>
        </xs:element>
        <xs:element name="loop" minOccurs="3" maxOccurs="3">
            <xs:simpleType>
                <xs:attribute use="required" fixed="2000" type="xs:string" name="id" />
                <xs:attribute use="required" fixed="loop 2000" type="xs:string" name="name" />
            </xs:simpleType>
        </xs:element>