在 xsd 定义元素时,使用Order 指示器来定义元素的顺序:
All 指示器
<all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
注:当使用 <all> 指示器时,你可以把 <minOccurs> 设置为 0 或者 1,而只能把 <maxOccurs> 指示器设置为 1(稍后将讲解 <minOccurs> 以及 <maxOccurs>)。
Choice 指示器
<choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)
注:如需设置子元素出现任意次数,可将 <maxOccurs> (稍后会讲解)设置为 unbounded(无限次)。
Sequence 指示器
<sequence> 规定子元素必须按照特定的顺序出现。
按照设计xsd 中 sequence下元素属性有序,all下元素最多出现一次,当我们需要无序的元素时,如 <A> </A> <B></B><A><A/> ... 时,则不太好解决;
解决方式: 给choice 添加 maxOccurs 和 minOccurs 来解决;
<xs:element name="Transaction">
<xs:complexType>
<xs:choice> <!-- 用choice来解决无序的问题 -->
<xs:element ref="DynSentence" maxOccurs="unbounded" minOccurs="0" />
<xs:element ref="Function" maxOccurs="unbounded" minOccurs="0" />
<xs:element ref="FlowCtrl" />
</xs:choice>
<xs:attributeGroup ref="transactionGroup" />
</xs:complexType>
</xs:element>
maxOccurs 指示器
<maxOccurs> 指示器可规定某个元素可出现的最大次数;
minOccurs 指示器
<minOccurs> 指示器可规定某个元素能够出现的最小次数;