3つのプロパティを持つオブジェクトがある状況があります:1)アクション2)ID 3)名前
Action
Update
またはである可能性がRemove
あり、必須です。ID
はintであり、必須です。名前は文字列であり、の場合はオプションであり、の場合Action=Remove
は必須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:28am EST: もう少し考えた後、私は何かにパッチを当てました。これは私が探していたものではありませんが、おそらくクライアントが受け入れるのに十分近いものです。条件の詳細には正確には入りませんが、クライアントに構造定義を提供します。どう思いますか?
<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>