Мой вопрос об определении XML-схемы, которая будет проверять следующий пример XML:XSD: xs: sequence & xs: комбинация выбора для xs: элементы расширения?
<rules>
<other>...</other>
<bool>...</bool>
<other>...</other>
<string>...</string>
<other>...</other>
</rules>
Порядок дочерних узлов не имеет значения. Мощность дочерних узлов равна 0..неограничена.
Все дочерние элементы rules
узла имеют общий базовый тип, rule
, например, так:
<xs:complexType name="booleanRule">
<xs:complexContent>
<xs:extension base="rule">
...
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="stringFilterRule">
<xs:complexContent>
<xs:extension base="filterRule">
...
</xs:extension>
</xs:complexContent>
</xs:complexType>
Моя текущая попытка определения схемы для rules
узла ниже. Тем не менее,
- Могу ли я гнездо
xs:choice
вxs:sequence
? Если, где указать атрибутmaxOccurs="unbounded"
? Есть ли лучший способ сделать это, например
xs:sequence
, который указывает только базовый тип его дочерних элементов?<xs:element name="rules"> <xs:complexType> <xs:sequence> <xs:choice> <xs:element name="bool" type="booleanRule" /> <xs:element name="string" type="stringRule" /> <xs:element name="other" type="someOtherRule" /> </xs:choice> </xs:sequence> </xs:complexType> </xs:element>
+1 & check @lexicore: для вашего предложения по использованию групп подстановки - это лучший способ, чем положить 'xs: choice' в последовательность' xs: sequence'. – bguiz