WSDL Documents

From http://www.w3schools.com (Copyright Refsnes Data)

# WSDL Documents

A WSDL document is just a simple XML document.

It contains set of definitions to describe a web service.

## The WSDL Document Structure

A WSDL document describes a web service using these major elements:

Element | Defines
--- | ---
<portType> | The operations performed by the web service
<message> | The messages used by the web service
<types> | The data types used by the web service
<binding> | The communication protocols used by the web service

The main structure of a WSDL document looks like this:

    <definitions>

    <types>
       definition of types........
    </types>

    <message>
       definition of a message....
    </message>

    <portType>
       definition of a port.......
    </portType>

    <binding>
       definition of a binding....
    </binding>

    </definitions>

A WSDL document can also contain other elements, like extension elements and a service element that makes it possible to group together the definitions of several web services in one single WSDL document.

For a complete syntax overview go to the chapter WSDL Syntax.

## WSDL Ports

The <portType> element is the most important WSDL element.

It describes a web service, the operations that can be performed, and the messages that are involved.

The <portType> element can be compared to a function library (or a module, or a class) in a traditional programming language.

## WSDL Messages

The <message> element defines the data elements of an operation.

Each message can consist of one or more parts. The parts can be compared to the parameters of a function call in a traditional programming language.

## WSDL Types

The <types> element defines the data type that are used by the web service.

For maximum platform neutrality, WSDL uses XML Schema syntax to define data types.

## WSDL Bindings

The <binding> element defines the message format and protocol details for each port.

## WSDL Example

This is a simplified fraction of a WSDL document:

    <message name="getTermRequest">
       <part name="term" type="xs:string"/>
    </message>

    <message name="getTermResponse">
       <part name="value" type="xs:string"/>
    </message>

    <portType name="glossaryTerms">
      <operation name="getTerm">
          <input message="getTermRequest"/>
          <output message="getTermResponse"/>
      </operation>
    </portType>

In this example the <portType> element defines "glossaryTerms" as the name of a port, and "getTerm" as the name of an operation.

The "getTerm" operation has an input message called "getTermRequest" and an output message called "getTermResponse".

The <message> elements define the parts of each message and the associated data types.

Compared to traditional programming, glossaryTerms is a function library, "getTerm" is a function with "getTermRequest" as the input parameter and getTermResponse as the return parameter.

From http://www.w3schools.com (Copyright Refsnes Data)