2012-08-22 116 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) 
) 

另外,针对不同使用不同的模式动词,因为模式的工作是定义一组消息,而你的设计是,可接受的精确消息集取决于动词。