我的对象有 3 个属性:1) 操作 2) ID 3) 名称
Action
可以是Update
或Remove
并且是强制性的。ID
是一个 int 并且是强制性的。Name 是一个字符串,并且是可选的 whenAction=Remove
并且是强制的 when Action=Update
。
我如何在 XSD 中描述这一点?谢谢!
吉姆
这是我到目前为止所拥有的:
<s:element name="UpdateAccount">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="myAccount" type="tns:WSUpdate" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="WSUpdate">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="Name" nillable="false" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="action" type="tns:UpdateAction" />
</s:sequence>
</s:complexType>
<s:simpleType name="UpdateAction">
<s:restriction base="s:string">
<s:enumeration value="Update" />
<s:enumeration value="Remove" />
</s:restriction>
</s:simpleType>
编辑 2012 年 9 月 12 日 @ 美国东部标准时间上午 9:28: 在做了更多思考之后,我已经修补了一些东西。这不是我想要的,但可能足够接近我的客户接受。它并没有完全进入条件细节,但它确实为客户提供了结构定义。你怎么看?
<s:element name="UpdateAccount">
<s:complexType>
<s:sequence>
<s:choice>
<s:element minOccurs="0" maxOccurs="1" name="myAccount" type="tns:WSUpdate" />
<s:element minOccurs="0" maxOccurs="1" name="myAccount" type="tns:WSDelete" />
</s:choice>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="WSUpdate">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="Name" nillable="false" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="action" type="tns:UpdateAction" />
</s:sequence>
</s:complexType>
<s:complexType name="WSDelete">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Name" nillable="true" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="action" type="tns:UpdateAction" />
</s:sequence>
</s:complexType>
<s:simpleType name="UpdateAction">
<s:restriction base="s:string">
<s:enumeration value="Update" />
<s:enumeration value="Remove" />
</s:restriction>
</s:simpleType>