我想要做的是,声明一个名为“数据”的父元素,其中有这一个元素的 10 个子元素是有条件的。
我的 XSD 是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:element name="data" >
<xs:complexType>
<xs:sequence>
<xs:element name="sub_data" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all >
<xs:element ref="A"/>
<xs:element ref="B" minOccurs="0" maxOccurs="1"/>
<xs:element ref="C"/>
<xs:element ref="D"/>
<xs:element ref="E"/>
<xs:element ref="F"/>
<xs:element ref="G"/>
<xs:element ref="H"/>
<xs:element ref="I"/>
<xs:element ref="J"/>
<xs:element ref="K"/>
<xs:element ref="L"/>
<xs:element ref="M"/>
<xs:element ref="N"/>
<xs:element ref="element_group"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="status"/>
</xs:complexType>
</xs:element>
<xs:element name="O" type="xs:string" substitutionGroup="element_group">
<xs:element name="P" type="xs:string" substitutionGroup="element_group">
<xs:element name="Q" type="xs:string" substitutionGroup="element_group">
</xs:schema>
要求是:
- 从 A 到 N 的所有元素都以任意顺序出现。
- 元素 P、Q 和 R 也是数据的一部分,但在 3 中仅出现一个元素。顺序也是任意的。
- 更重要的是,我已经涵盖了第 1 点和第 2 点,但我还想要一个限制,那就是只有四个元素将成为其中的一部分,
<data>
这意味着从<A>
to 到的元素计数<Q>
正好是四个,
组合可以从<A>
到任何一个,<Q>
但最终计数只有四个,请帮助我。
现在目前我无法设置maxOccures
,<all>
它在设置 maxOccures 后不编译 xsd。