xsd表示必需元素和可选元素

时间:2012-09-11 15:45:01

标签: xml xsd

支持以下xml的xsd定义是什么?

<xml>
    <RequiredElementA></RequiredElementA>
    <RequiredElementB></RequiredElementB>
    <RequiredElementC></RequiredElementC>
    <OptionalElementD></OptionalElementD>
    <OptionalElementE></OptionalElementE>
</xml>

我希望前3个是必需的,但最后两个是可选的。订单无关紧要(但订单是/否不是要求)。

1 个答案:

答案 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>

有些人甚至在没有传达任何信息的情况下也希望得到无约束的秩序;这使得数据源不必查看规定的顺序,但代价是使验证更加复杂。