具有键/值对的WSDL枚举限制

时间:2012-03-16 13:20:30

标签: soap wsdl enumeration

我正在开发一个SOAP Web服务,其中包含许多使用枚举限制的输入字段。

这些枚举很像HTML选择/选项设置;我希望返回一个值,但是也应该使用WSDL公开该值的标签。

一个例子:客户希望添加关于他/她房屋的保险单,因此需要指定所涉及的建筑类型。

<xsd:restriction base="xsd:string">
  <xsd:enumeration value="00001" />
  <xsd:enumeration value="00002" />
  <xsd:enumeration value="00003" />
</xsd:restriction>

但是,客户还不了解这些值1,2和3是什么。所以,像这样:

<xsd:restriction base="xsd:string">
  <xsd:enumeration value="00001" label="Brick and mortar" />
  <xsd:enumeration value="00002" label="Straw" />
  <xsd:enumeration value="00003" label="Aircastle" />
</xsd:restriction>

非常适合客户用于向消费者展示这些标签。

这种构造是否有任何标准的WSDL注释/语法?

1 个答案:

答案 0 :(得分:7)

  

这种构造是否有任何标准的WSDL注释/语法?

我不敢。 XML Schema enumeration用于将值约束在指定的可能值集合中。当您的客户端向您发送请求时,只允许具有限制类型的元素(在您的情况下)值为00001,00002或00003,否则它将无效。

限制仅指定值,不能添加标签。你最多可以添加<annotation>但这只是文档。在客户端UI中,每个客户都有责任说00001实际上是“实体”,而00002是“稻草”等。

如果您不想这样做,而是想要也返回标签,那么您需要一个稍微复杂的对象,可能是这样的:

<option>
  <key>00001</key>
  <label>Brick and mortar</label>
</option>

您提供标签,并使用以下架构限制密钥:

<xsd:simpleType name="ValuesType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="00001" />
    <xsd:enumeration value="00002" />
    <xsd:enumeration value="00003" />
  </xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="OptionType">
    <xsd:sequence>
      <xsd:element name="key" type="ValuesType" />
      <xsd:element name="label" type="xsd:string" />
    </xsd:sequence>
</xsd:complexType>

您可以向客户返回选项列表,他们可以将其显示在界面中,其中keylabel<select>key输入中的选项文字,而在请求您将获得所选的值(即选定的{{1}})。