我正在搜索如何创建验证这些不同情况的XSD:
案例1 (所有元素)
...
<Childs>
<ElementA/>
<ElementB/>
<ElementC/>
</Childs>
...
案例2 (某些元素缺失,订单可能会发生变化)
...
<Childs>
<ElementC/>
<ElementA/>
</Childs>
...
案例3 (没有孩子)
...
<Childs/>
...
案例4 (每个孩子可以按任何顺序出现几次)
...
<Childs>
<ElementA/>
<ElementB/>
<ElementA/>
<ElementC/>
<ElementA/>
</Childs>
...
我做了几次尝试:
尝试#1
...
<xs:element name="Childs" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="ElementA" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ElementB" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ElementC" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
...
- &GT;不起作用,因为必须遵守订单(在这种情况下,ElementA
之后不会显示ElementB
尝试#2
...
<xs:element name="Childs" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element name="ElementA" minOccurs="0" maxOccurs="1" />
<xs:element name="ElementB" minOccurs="0" maxOccurs="1" />
<xs:element name="ElementC" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:complexType>
</xs:element>
...
似乎禁止在maxOccurs
尝试#3
...
<xs:element name="Childs" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ElementA" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ElementB" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ElementC" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
</xs:element>
...
据我了解,我将能够拥有所需数量的元素,但所有元素都必须属于同一类型。
那么,我是否误解了某些内容,或者是否有其他因素可以实现我的目标?