Что означает утверждение 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,

Другие вопросы по тегам