A WSDL document is just a simple XML document.
It contains set of definitions to describe a web service.
A WSDL document describes a web service using these major elements:
Element | Description |
---|---|
<types> | A container for data type definitions used by the web service |
<message> | A typed definition of the data being communicated |
<portType> | A set of operations supported by one or more endpoints |
<binding> | A protocol and data format specification for a particular port type |
The main structure of a WSDL document looks like this:
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.
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.
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.
The <types> element defines the data types that are used by the web service.
For maximum platform neutrality, WSDL uses XML Schema syntax to define data types.
The <binding> element defines the data format and protocol for each port type.
This is a simplified fraction of a WSDL document:
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.