Мой вопрос касается определения схемы XML, которая будет проверять следующий образец XML:
<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>