Web Services implementieren mit WSDL

WSDL-Dokumentenstruktur: Die Elemente und ihre Beziehungen

Wir beschreiben nun detaillierter, aus welchen Elementen ein WSDL-Dokument besteht; dabei werden nur die wichtigsten berücksichtigt.

WSDL-Elemente: Das Element „<types>“

Das <types>-Element enthält jene Datentypen, die später in den Nachrichten (<message>) verwendet werden. Es bietet die Möglichkeit, all die Datentypen zu definieren, die nicht vom XML-Schema-Standard erfasst werden.

Das folgende, leicht modifizierte Beispiel stammt aus dem Buch von W. Dostal: „Serviceorientierte Architekturen mit Web Services“. Bei dem Beispiel handelt es sich um einen Web Service, der es ermöglicht, nach Büchern in einem Buchkatalog zu suchen. Um die Suche durchzuführen, stellt der Nutzer des Web Service eine Anfrage mit den Suchbegriffen, zum Beispiel Titel und Autor oder einem Stichwort. Die Anfrage wird dann vom Web Service bearbeitet und mit einer Trefferliste beantwortet, die den Suchkriterien entsprechende Bücher beinhaltet.

In dem Beispiel werden im Abschnitt <types> die zum Datenaustausch mit dem Web Service notwendigen Datentypen definiert. Hierfür wird der XML-Schema-Standard des W3Cs verwendet. Die in diesem Abschnitt definierten Datentypen können dann im WSDL-Dokument verwendet werden, um die Eingabe- und Ausgabeparameter des Web Service darzustellen.

<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/buch/suche.xsd"
xmlns="http://www.example.com/buch/suche.wsdl">
<xs:element name="buchSuchen" type="AnfrageTyp"/>
<xs:element name="buchTreffer" type="AntwortTyp"/>
<xs:element name="eingabeUngueltigFehler"
type="xs:string"/>

<xs:complexType name="BuchTyp">
<xs:sequence>
<xs:element name="Autor" type="xs:string"/>
<xs:element name="Titel" type="xs:string"/>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Preis" type="xs:double"/>
<xs:element name="Stichwort" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="AnfrageTyp">
<xs:sequence>
<xs:element name="Buch" type="BuchTyp"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AntwortTyp">
<xs:sequence>
<xs:element name="Buch" type="BuchTyp"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>

In dem Listing werden die drei Typen „buchSuchen“, „buchTreffer“ und „eingabeUngueltigFehler“ definiert. „buchSuchen“ wird verwendet, um die Suchkriterien aufzunehmen, „buchTreffer“ stellt die Trefferliste dar, die der Benutzer als Ausgabe erhält. „eingabeUngueltigFehler“ legt die Nachricht fest, die im Falle eines Fehlers an den Nutzer gesendet wird.

„buchSuchen“ und „buchTreffer“ nutzen den Datentyp „BuchTyp“. Er wird nicht nur zur Angabe der Suchkriterien verwendet, sondern auch für die Elemente der Trefferliste.