Что означает утверждение WS-I BP2012?
Может кто-нибудь объяснить, что это на самом деле означает? Пример был бы действительно полезен.
WS-I: (BP2012) Привязка литерала документа содержит элементы soapbind:body, которые ссылаются на элементы части сообщения, которые не имеют атрибута элемента.
1 ответ
Это сообщение относится к базовому профилю WS-I, который пытается прояснить подмножество WSDL и другие спецификации, которые обычно совместимы.
В этом случае BP2012 связан со следующим:
Привязка литерала документа в ОПИСАНИИ ДОЛЖНА ссылаться в каждом из его элементов (элементов) wsoap12:body только на элемент (ы) wsdl:part, которые были определены с использованием атрибута элемента.
Обычно вы видите это, если одно из сообщений, используемых в вашем веб-сервисе, определяется в терминах type
вместо element
, например:
<wsdl:message name="MyMessage">
<wsdl:part name="MyPart" type="xsd:string"/>
</wsdl:message>
Чтобы это исправить, вам нужно изменить свое сообщение так, чтобы part
определяется с точки зрения element
, что-то вроде:
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.com/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:element name="MyElement" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="MyMessage">
<wsdl:part name="MyPart" element="tns:MyElement" xmlns:tns="http://www.example.com/"/>
</wsdl:message>
В качестве альтернативы вы можете переключить свой веб-сервис с использования document/literal
привязка к использованию rpc/literal
связывание. С rpc/literal
обязательные, части определены в терминах type
вместо element
,