【问题标题】:WSDL enumeration restriction with key/value pairs带有键/值对的 WSDL 枚举限制
【发布时间】:2012-03-16 13:20:29
【问题描述】:

我正在开发一个 SOAP 网络服务,该服务具有许多使用枚举限制的输入字段。

这些枚举很像 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 注释/语法?

【问题讨论】:

    标签: soap wsdl enumeration


    【解决方案1】:

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

    恐怕不会。 XML Schema enumeration 用于将值限制在一组指定的可能值内。当您的客户向您发送请求时,具有限制类型的元素将只被允许(在您的情况下)具有 00001、00002 或 00003 的值,否则它将无效。

    限制只指定值,不能添加标签。您最多可以添加一个&lt;annotation&gt;,但这只是文档。在客户端 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>
    

    您可以向客户返回一个选项列表,他们可以在界面中将其显示在界面中,key 作为值,label 作为&lt;select&gt; 输入中的选项文本,而根据请求,您将返回选定的值(即选定的key)。

    【讨论】:

    • 我设法通过在“ValuesTypes”之前添加“tns:”来使其工作,例如
    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多