XSD для повторяющихся элементов с тем же именем, но с другим значением атрибута - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь написать XSD для следующего фрагмента XML.

<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 не находится под моим контролем. Как мне справиться с этим?

EDIT:

Я написал генератор парсера xml + и изменил полученный XML на что-то вроде

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

Теперь я могу легко написать XSD для этого.

1 Ответ

1 голос
/ 15 ноября 2011
<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>
...