我有一个 XML Schema,它定义了一个 complexType,如下所示:
<xs:complexType name="CompType">
<xs:sequence>
<xs:element name="A" type="TypeA" minOccurs="0" maxOccurs="1"/>
<xs:choice minOccurs="1" maxOccurs="12">
<xs:element name="B" type="TypeB"/>
<xs:element name="C" type="TypeC"/>
<xs:element name="D" type="TypeD"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
我需要它来验证一个 XML 元素,该元素最多可以有 12 个“普通”子元素(普通 = TypeB、TypeC 或 TypeD),但可能有一个额外的 TypeA 的“特殊”子元素。
因为它是有效的,但我不想将“特殊”子元素限制为始终是第一个。换句话说,我希望能够做类似下面的事情,并增加一个限制,即只能有一个 TypeA 子元素,并且不能超过 12 个“正常”子元素。
<xs:complexType name="CompType">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="13">
<xs:element name="A" type="TypeA"/>
<xs:element name="B" type="TypeB"/>
<xs:element name="C" type="TypeC"/>
<xs:element name="D" type="TypeD"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
这是可能吗?如果是,有人可以指出如何或至少指出我正确的方向吗?