Документация / WSDL

Структура документа

Корень документа — wsdl:definitions в пространстве имён http://schemas.xmlsoap.org/wsdl/. Внутри — разделы в порядке: import, types, message, portType, binding, service. У каждого раздела может быть wsdl:documentation с описанием для людей.

definitions

АтрибутНазначение
targetNamespaceПространство имён описания: к нему относятся имена сообщений, интерфейсов, привязок и сервисов
nameНазвание описания (необязательно)

Ссылки между разделами записываются квалифицированными именами с префиксом целевого пространства имён: сообщение GetRateRequest из примера — это tns:GetRateRequest.

import

wsdl:import подключает другое WSDL-описание (с его сообщениями, интерфейсами, привязками) и связывает его с пространством имён. Так абстрактную часть часто хранят отдельно от конкретной.

<wsdl:import namespace="http://example.com/rates/abstract" location="rates-abstract.wsdl"/>

Схемы XSD подключают не wsdl:import, а xs:import внутри wsdl:types.

types

wsdl:types содержит определения типов данных. Стандарт допускает любые системы типов, но на практике это всегда XML Schema: одна или несколько xs:schema, встроенных или подключённых через xs:import/xs:include.

<wsdl:types>
  <xs:schema targetNamespace="http://example.com/rates">
    <xs:import namespace="http://example.com/common" schemaLocation="common.xsd"/>
    <xs:element name="GetRate" type="xs:string"/>
  </xs:schema>
</wsdl:types>

message

Сообщение — абстрактное описание передаваемых данных. Оно состоит из частей (wsdl:part); каждая часть ссылается либо на элемент схемы (element), либо на тип (type):

  • element используется в стиле document — тело сообщения содержит этот элемент;
  • type используется в стиле rpc — часть становится параметром вызова.
<wsdl:message name="CreateOrderRequest">
  <wsdl:part name="parameters" element="tns:CreateOrder"/>
</wsdl:message>
<wsdl:message name="AuthHeader">
  <wsdl:part name="token" element="tns:Token"/>
</wsdl:message>

portType

portType — интерфейс сервиса: именованный набор операций. Операция описывает обмен сообщениями: wsdl:input, wsdl:output и wsdl:fault ссылаются на сообщения из раздела message. Подробнее — на странице «Операции».

binding

binding задаёт для конкретного portType протокол и формат сообщений: для каждой операции указывается, как её входное и выходное сообщение превращаются в запрос и ответ. Для этого используются элементы расширения в других пространствах имён: soap:, http:, mime:.

service и port

service — набор портов. Порт связывает привязку с конкретным адресом.

<wsdl:service name="RatesService">
  <wsdl:documentation>Курсы валют ЦБ</wsdl:documentation>
  <wsdl:port name="RatesPort" binding="tns:RatesSoapBinding">
    <soap:address location="https://api.example.com/rates"/>
  </wsdl:port>
  <wsdl:port name="RatesPort12" binding="tns:RatesSoap12Binding">
    <soap12:address location="https://api.example.com/rates/soap12"/>
  </wsdl:port>
</wsdl:service>

Порты одного сервиса обычно предоставляют один интерфейс по разным протоколам или адресам: клиент выбирает подходящий.

Обновлено: 30 сентября 2026 г.