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

use*_*095 6 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>
Run Code Online (Sandbox Code Playgroud)

但是,客户还不了解这些值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>
Run Code Online (Sandbox Code Playgroud)

用户可以很好地向消费者展示这些标签.

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

Bog*_*dan 7

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

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

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

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

<option>
  <key>00001</key>
  <label>Brick and mortar</label>
</option>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

您可以向客户端返回选项列表,他们可以在界面中显示它key作为值和输入中label的选项文本<select>,而在请求中您将获得所选值(即选定的值key).