WSDL 2.0 - types
types element describes the data types used by your web service. Most often a web service
will have an input type, an output type, and perhaps a fault type. If the web service has more than one operation,
then each operation may have its own input type, output type and fault type.
The data types can be declared in any language you like, as long as your web service API supports it. Data types are often specified using XML Schema though, since XML Schema is a natural fit for XML structures.
Here is an example
types element that uses XML Schema to define an input type, an output type,
and a fault type:
<?xml version="1.0" encoding="utf-8" ?> <description xmlns="http://www.w3.org/ns/wsdl" targetNamespace= "http://jenkov.com/MyService" xmlns:tns= "http://jenkov.com/MyService" xmlns:stns= "http://jenkov.com/MyService/schema" . . . > ... <types> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" targetNamespace= "http://jenkov.com/MyService/schema" xmlns:tns= "http://jenkov.com/MyService/schema" > <xs:element name="latestTutorialRequest" type="typeLatestTutorialRequest"/> <xs:complexType name="typeLatestTutorialRequest"> <xs:sequence> <xs:element name="date" type="xs:date"/> </xs:sequence> </xs:complexType> <xs:element name="latestTutorialResponse" type="xs:string"/> <xs:element name="invalidDateError" type="xs:string"/> </xs:schema> </types> . . . </description>
latestTutorialRequest element is the input type. As you can see,
this element is of type
typeLatestTutorialRequest, and it can contain
a date, telling which date to get the latest tutorial after.
latestTutorialResponse element is the output type. The content of
this element is just a string. This will contain the URL for the latest tutorial published
after the given date, or an empty string if no tutorial was published after the given date.
invalidDateError element is the fault type. The content of this element is just
a string. This string can contain a textual explanation of why the date given in the input request
XML Schema: Top Level Elements Only
In XML Schema you can define all kinds of elements and types. However, only elements declared
as single elements (there can be only one), and as top level elements (not nested inside other elements),
can be referred to by the WSDL 2.0
operation elements. In other words,
you could not use the
date element by itself as an input or output type of an operation,
since it is declared inside the
The Schema Name Space
Notice how the example shown earlier declared a name space with the prefix
The Schema Target Name Space (stns). This name space URI is also referenced as the target
name space of the XML Schema, but here it is declared via
The prefixes are not important though. The prefixes
used inside XML Schema only exist within the Schema declaration, not outside. Therefore these
tns namespaces do not conflict with those defined