我有一个XSD文件,其中有以下情况:
<xs:element name='test'>
<xs:complexType>
<xs:all>
<xs:element ref='el1' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el2' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el3' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el4' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el5' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el6' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el7' minOccurs='0' maxOccurs='1'/>
<xs:element ref='el8' minOccurs='0' maxOccurs='unbounded'/>
</xs:all>
<xs:attribute name='attr1' use='optional' type='yesno'/>
</xs:complexType>
</xs:element>现在的问题是,到目前为止,这还不起作用,因为我不能在maxOccurs='unbounded'元素中使用all。是否有任何方法可以实现这一点,例如使用xs:choice
发布于 2013-09-11 13:29:32
为了保持所需的基数,XSD 1.0中唯一的方法是用另一个元素包装重复元素,如下所示:
<xs:element name='test'>
<xs:complexType>
<xs:all>
<xs:element ref='el1' minOccurs='0'/>
<xs:element ref='el2' minOccurs='0'/>
<xs:element ref='el3' minOccurs='0'/>
<xs:element ref='el4' minOccurs='0'/>
<xs:element ref='el5' minOccurs='0'/>
<xs:element ref='el6' minOccurs='0'/>
<xs:element ref='el7' minOccurs='0'/>
<xs:element ref='el8w' minOccurs='0'/>
</xs:all>
<xs:attribute name='attr1' type='yesno'/>
</xs:complexType>
</xs:element>
<xs:element name="el8w">
<xs:complexType>
<xs:sequence>
<xs:element ref="el8" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>模仿xs:all的(重复)选择(即允许带有指示基数的散列元素)不能强制单个粒子的出现。
https://stackoverflow.com/questions/18742314
复制相似问题