T.M. SoftStudio

feci quod potui, faciant meliora potentes

WSDL 1.1

В табл. 1 перечислены пространства имен, используемые в документе WSDL 1.1.

Таблица 1. Пространства имен WSDL 1.1

Префикс

Пространство имен

wsdl

http://schemas.xmlsoap.org/wsdl/

soap

http://schemas.xmlsoap.org/wsdl/soap/

http

http://schemas.xmlsoap.org/wsdl/http/

mime

http://schemas.xmlsoap.org/wsdl/mime/

soapenc

http://schemas.xmlsoap.org/soap/encoding/

soapenv

http://schemas.xmlsoap.org/soap/envelope/

xsi

http://www.w3.org/2000/10/XMLSchema-instance

xsd

http://www.w3.org/2000/10/XMLSchema



Корневым элементом документа WSDL 1.1 является элемент <wsdl:definitions> (рис. 1). Этот элемент имеет необязательные атрибуты name (имя документа) и targetNamespace (целевое пространство имен WSDL-описания).

Рис. 1. Общая схема элемента <wsdl:definitions>

Элемент <wsdl:import> позволяет связать пространство имен с адресом документа с помощью атрибутов namespace (URI-идентификатор пространства имен, объявленный посредством атрибута xmlns элемента <wsdl:definitions>) и location (URI-адрес XML-схемы).

Элемент <wsdl:document> служит контейнером для документации (комментариев) элементов WSDL-описания Web-сервиса.

Элемент <wsdl:types> описывает типы данных, используемые в обмене сообщений Web-сервиса с помощью XML-схем, представленных вложенными элементами <xsd:schema>.

Элемент <wsdl:message> описывает сообщения, причем сообщения состоят из одной или нескольких частей, содержимое которых определяется XML-схемами, определенными в элементе <wsdl:types>. Элемент <wsdl:message> имеет атрибут name, указывающий идентификатор сообщения, а вложенные элементы <part> описывают неделимые части сообщения, связывая типы данных с идентификаторами частей сообщений, с помощью атрибутов:

  • name — идентификатор части сообщения;

  • element — ссылка на элемент <element> типа данных, задаваемая с помощью QName-имени элемента;

  • type — ссылка на элемент <simpleType> или <complexType> типа данных, задаваемая с помощью QName-имени.

Элемент <wsdl:portType> описывает набор абстрактных операций Web-сервиса и связанные с ними сообщения и имеет атрибут name (идентификатор элемента) и вложенные элементы <wsdl:operation> (описывают операции).

Элемент <wsdl:operation> (рис. 2) имеет атрибут name (идентификатор операции) и вложенные элементы:

  • <wsdl:input> — входящее сообщение, атрибуты name (идентификатор) и message (ссылка на элемент <wsdl:message> с помощью QName);

  • <wsdl:output> — исходящее сообщение, атрибуты name (идентификатор) и message (ссылка на элемент <wsdl:message> с помощью QName);

  • <wsdl:fault> — сообщение об ошибке, атрибуты name (идентификатор) и message (ссылка на элемент <wsdl:message> с помощью QName).

Рис. 2. Общая схема элемента <wsdl:operation>

Элемент <wsdl:binding> (рис. 3) описывает детали формата сообщений и протокола для операций порта, имеет атрибуты name (идентификатор связи) и type (имя элемента <wsdl:portType>). Детали формата сообщений и протокола их передачи описываются с помощью элементов WSDL-расширения, которые могут быть как дочерними элементами элемента <wsdl:binding>, так и дочерними элементами его вложенных элементов <wsdl:operation>, <wsdl:input>, <wsdl:output> и <wsdl:fault>.

Рис. 3. Общая схема элемента <wsdl:binding>

Элементы WSDL-расширения

Протокол SOAP 1.1

  • Элемент <soap:binding> имеет атрибуты:

    transport, который указывает транспортный протокол для SOAP-сообщений (например, "http://schemas.xmlsoap.org/soap/http" — HTTP-протокол);

    style, принимающий значение rpc (сообщение содержит параметры) и возвращает значения или document (по умолчанию, сообщение содержит документы).

  • Элемент <soap:operation> содержит информацию для операции в целом, имеет атрибуты style (значение rpc или document) и soapAction (определяет заголовок операции).

  • Элемент <soap:body> определяет композицию частей сообщения в элементе сообщения SOAP Body, имеет атрибуты:

    parts — часть сообщения;

    use, принимающий значение literal (кодировка части сообщения определяется конкретной XML-схемой, на которую ссылаются атрибуты element или type элемента <part>) или encoded (кодировка части сообщения определяется правилами кодирования, указанными с помощью атрибута encodingStyle, и применяемыми к абстрактному типу, на который ссылается атрибут type элемента <part>);

    encodingStyle — список URI-идентификаторов кодировок, используемых в сообщении;

    namespace — пространство имен тела сообщения.

  • Элемент <soap:fault> описывает содержимое элемента сообщения SOAP Fault Details и содержит атрибуты name, use, encodingStyle и namespace. Элемент <soap:fault> является дочерним элементом элемента <wsdl:fault>.

  • Элементы <soap:header> и <soap:headerfault> содержат информацию для заголовка SOAP-сообщения. Элементы имеют атрибуты message, part, use, namespace и encodingStyle. Элемент <soap:headerfault> может присутствовать в элементе <soap:header> для описания передачи информации об ошибки в заголовке SOAP-сообщения.

  • Элемент <soap:address> связывает порт с URI-адресом с помощью атрибута location.

Протокол HTTP 1.1

  • Элемент <http:address> указывает базовый URI порта.

  • Элемент <http:binding> указывает, что связка использует HTTP-протокол, атрибут verb указывает HTTP-метод (например, GET).

  • Элемент <http:operation> указывает относительный URI-адрес для операции, который в комбинации с <http:address> формирует полный адрес HTTP-запроса.

  • Элемент <http:urlEncoded/> указывает, что части сообщения кодируются в HTTP-запросе, используя стандартную URI-кодировку (name1=value&name2=value...).

  • Элемент <http:urlReplacement/> указывает, что части сообщения кодируются в HTTP-запросе согласно алгоритму замещения.

Формат MIME

  • Элемент <mime:content> связывает содержимое сообщения с MIME-типами с помощью атрибутов part и type.

  • Элемент <mime:multipartRelated> составляет набор частей в одно сообщение MIME-типа multipart/related с помощью вложенных элементов <mime:part>.

  • Элемент <mime:mimeXml> используется для описания передаваемых XML-данных, не имеющих элемента SOAP Envelope, но определяемых XML-схемой. Атрибут part элемента <mime:mimeXml> ссылается на часть сообщения, которая описывается конкретной XML-схемой.

Элемент <wsdl:service> описывает реализацию Web-сервиса путем группировки его конечных точек, являющихся получателями-отправителями сообщений Web-сервиса. Элемент <wsdl:service> имеет атрибут name (идентификатор сервиса) и вложенные элементы <wsdl:port>, определяющие конечные точки Web-сервиса.

Элемент <wsdl:port> содержит атрибуты name (имя конечной точки) и binding (QName-имя соответствующего элемента <wsdl:binding>), а также вложенные элементы WSDL-расширения <soap:address>, указывающие URI-адрес конечной точки.

Основные отличия WSDL 1.1 от WSDL 2.0:

  • в WSDL 2.0 элемент <definitions> заменен элементом <description>;

  • в WSDL 2.0 элемент <portType> заменен элементом <interface>;

  • в WSDL 2.0 элемент <port> заменен элементом <endpoint>;

  • в WSDL 2.0 элемент <message> отсутствует;

  • элемент <interface> имеет дополнительные атрибуты extends и styleDefault;

  • элемент <operation> элемента <interface> имеет обязательные атрибуты name и pattern и дополнительные атрибуты style, wsdlx:safe и wrpc:signature;

  • в WSDL 2.0 элемент <fault> является дочерним элементом элемента <interface>;

  • в WSDL 2.0 определены элементы <infault> и <outfault>, являющиеся дочерними для элементов <operation>;

  • элементы <input> и <output>, определенные в элементе <interface>, в WSDL 2.0 имеют необязательные атрибуты messageLabel и element;

  • элемент <endpoint> в WSDL 2.0 имеет дополнительный атрибут address;

  • элементы расширения WSDL 2.0 поддерживают протокол SOAP 1.2;

  • в WSDL 2.0 определены элементы <include> и <import>;

  • элемент <types> WSDL 2.0 может иметь атрибуты wsdlx:interface и wsdlx:binding;

  • атрибут targetNamespace обязателен для элемента <description>;

  • в WSDL 2.0 вложенный элемент <operation> элемента <binding> имеет обязательный атрибут ref.