XSD";“一个或两个”;选择结构导致内容模型不明确
我试图创建一个简单的XSD选择构造,允许两个引用元素中的一个或两个,但不允许一个也不允许。结构类似于下面,但我一直得到一个模糊错误。我错过了什么XSD";“一个或两个”;选择结构导致内容模型不明确,xsd,Xsd,我试图创建一个简单的XSD选择构造,允许两个引用元素中的一个或两个,但不允许一个也不允许。结构类似于下面,但我一直得到一个模糊错误。我错过了什么 <xs:schema xmlns:xs="..."> <xs:element name="Number" type="xs:integer"/> <xs:element name="Text" type="xs:string"/> <xs:element name="RootStructure"&g
<xs:schema xmlns:xs="...">
<xs:element name="Number" type="xs:integer"/>
<xs:element name="Text" type="xs:string"/>
<xs:element name="RootStructure">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element ref="Number"/>
<xs:element ref="Text"/>
</xs:sequence>
<xs:element ref="Number"/>
<xs:element ref="Text"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
通常的方法是:
<xs:schema xmlns:xs="...">
<xs:element name="Number" type="xs:integer"/>
<xs:element name="Text" type="xs:string"/>
<xs:element name="RootStructure">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element ref="Number"/>
<xs:element ref="Text" minOccurs="0"/>
</xs:sequence>
<xs:element ref="Text"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
一些额外的提示,如果您链接了多个元素,并且想要一个元素包或另一个元素包,或者两者都要,您可以这样做:
<xsd:complexType name="ComplexTypeName">
<xsd:choice>
<xsd:sequence>
<xsd:element name="theElement" />
<xsd:element name="theElementIsFlagged" />
<xsd:choice>
<xsd:sequence>
<!-- note the empty sequence block -->
</xsd:sequence>
<xsd:sequence>
<xsd:element name="theOtherElement" />
<xsd:element name="theOtherElementIsFlagged" />
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="theOtherElement" />
<xsd:element name="theOtherElementIsFlagged" />
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
以防万一你们中的一些人遇到同样的问题