如何将(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>
答案 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"/>
另一种方法是修复发送,呼叫等序列。如果它们出现的顺序传达信息,则无法修复订单。如果没有,修理订单有助于确保没有人认为它确实传达了任何信息。