所有元素和序列元素

时间:2014-04-18 08:39:01

标签: xml xsd sequence

如何将(all)元素与上面的(序列)元素连接起来?或者它已经连接在一起? 我们已经单独完成它们,因为将(序列)和(所有)放在同一个元素(caseif)中是无效的。

这是架构:

<xs:element name="caseif">   
<xs:complexType>
<xs:sequence>
<xs:element ref="condition" minOccurs="1" /> 
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType>
<xs:all>
<xs:element ref="send"/>
<xs:element ref="call"/>
<xs:element ref="variable"/>
<xs:element ref="input"/>
<xs:element ref="output"/>
<xs:element ref="file"/>
<xs:element ref="comment"/>
<xs:element ref="loop"/>
<xs:element ref="case"/>
<xs:element ref="assignment"/>
</xs:all>
</xs:complexType>

1 个答案:

答案 0 :(得分:0)

这里最简单的设计是将send,call等元素放入包装器中。然后声明可以采用

形式
<complexType name="caseif">
  <sequence>
    <element ref="tns:condition"/>
    <element ref="tns:then"/>
  </sequence>
</complexType>
<complexType name="wrapper">
  <all>
    <element ref="send" minOccurs="1"/>
    <element ref="call" minOccurs="1"/>
    <element ref="variable" minOccurs="1"/>
    ...
    <element ref="assignment" minOccurs="1"/>
  </all>
</complexType>
<element name="caseif" type="tns:caseif"/>
<element name="condition" type="tns:..."/>
<element name="then" type="tns:wrapper"/>

另一种方法是修复发送,呼叫等序列。如果它们出现的顺序传达信息,则无法修复订单。如果没有,修理订单有助于确保没有人认为它确实传达了任何信息。