2012-08-22 115 views
0

我正在爲REST服務消息編寫XSD並遇到問題。我們的消息具有基於使用HTTP動詞的不同限制。XSD基於HTTP動詞的REST服務限制

例如,使用POST或PUT發送的一條消息需要填充兩個字段中的一個,所以我使用選擇元素。但是,從GET請求返回的這個相同的消息將具有兩個填充,這違反了選擇限制。

有沒有什麼解決辦法?示例消息如下:

<xsd:complexType name="MyMessage"> 
    <xsd:sequence> 
     <xsd:choice> 
      <xsd:group ref="GroupA" /> 
      <xsd:group ref="GroupB" /> 
     </xsd:choice> 
     <xsd:element name="SomeString" type="xsd:string" /> 
    </xsd:sequence> 
</xsd:complexType> 

回答

0

一個簡單的方法是將記錄信息作爲一個元素在相關的動詞,所以你的內容模式將類似於

(((POST|PUT), (GroupA|GroupB)) 
| (GET, GroupA, GroupB) 
| (HEAD|OPTIONS|DELETE|TRACE|CONNECT) 
) 

另外,針對不同使用不同的模式動詞,因爲模式的工作是定義一組消息,而你的設計是,可接受的精確消息集取決於動詞。