我正在开发一个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注释/语法?
答案 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>
您可以向客户返回选项列表,他们可以将其显示在界面中,其中key
为label
,<select>
为key
输入中的选项文字,而在请求您将获得所选的值(即选定的{{1}})。