支持以下xml的xsd定义是什么?
<xml>
<RequiredElementA></RequiredElementA>
<RequiredElementB></RequiredElementB>
<RequiredElementC></RequiredElementC>
<OptionalElementD></OptionalElementD>
<OptionalElementE></OptionalElementE>
</xml>
我希望前3个是必需的,但最后两个是可选的。订单无关紧要(但订单是/否不是要求)。
答案 0 :(得分:3)
如果孩子的顺序没有传达任何信息,通常最简单的方法就是修理订单。
<xs:complexType name="fixedOrder">
<xs:sequence>
<xs:element ref="RequiredElementA"/>
<xs:element ref="RequiredElementB"/>
<xs:element ref="RequiredElementC"/>
<xs:element ref="RequiredElementD" minOccurs="0"/>
<xs:element ref="RequiredElementE" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
如果订单包含信息(例如,您正在记录用户的A,B,C排名顺序,并且包含D和E的选项),您可以使订单不受约束。
<xs:complexType name="variableOrder">
<xs:all>
<xs:element ref="RequiredElementA"/>
<xs:element ref="RequiredElementB"/>
<xs:element ref="RequiredElementC"/>
<xs:element ref="RequiredElementD" minOccurs="0"/>
<xs:element ref="RequiredElementE" minOccurs="0"/>
</xs:all>
</xs:complexType>
有些人甚至在没有传达任何信息的情况下也希望得到无约束的秩序;这使得数据源不必查看规定的顺序,但代价是使验证更加复杂。