= SOAP =

== Was ist SOAP ==

SOAP ist ein auf XML basierendes Protokoll, um Daten zwischen
verschiedenen Rechnern auszutauschen und Unterprogramme auf
entfernten Rechnern aufzurufen (RPC).

Eine SOAP-Nachricht ist ein XML-Dokument in einer bestimmten Form,
die über einen beliebigen Transportweg an einen Server übermittelt
wird. Dieser bearbeitet die Anfrage und schickt eine Antowrt
(SOAP-Response) zurück. Als Transportweg wird meistens HTTP
benutzt.

Das XML-Dokument besteht aus einem Envelope-Tag, in das ein
Header-Tag und ein Body-Tag eingebunden sind. Im Body stehen dann
die eigentlich zu übermittelten XML-Daten.

== Was habe ich damit gemacht ==

Ich selber (ThomasBayen) habe SOAP benutzt, um Anfragen eines
vorhandenen Clients zu behandeln. Dabe ihabe ich leider bemerkt,
dass das Perl-SOAP-Modul nicht mit den fremden Anfragen zurechtkam.
IMHO wurde ein anderer XML-Namensraum benutzt, als in einer vom
Client des SOAP-Moduls erzeugten Nachricht, was der Server-Teil
nicht mitmacht. Aus diesem Grunde habe ich die SOAP-Nachrichten von
Hand mit dem Modul XML::DOM bzw. XML::LibDOM decodiert und neu
codiert. Insbesondere libdom hat sofort gut funktioniert. Da es
sich bei SOAP ja nur um XML mit speziellem Inhalt handelt, war das
Ganze recht einfach.

== DOM ==

DOM ist eine sprachunabhängige Spezifikation einer API, um
XML-Dokumente zu bearbeiten. Ein DOM-Parser parst ein XML-Dokument
und legt im Speicher eine Struktur an, die dieses Dokument
repräsentiert. Man kann nun mit bestimmten, vorgegebenen Befehlen
auf die Elemente zugreifen und mit Ihnen arbeiten. Natürlich kann
man aus der DOM-Struktur auch wieder ein XML-Dokument ausgeben. Es
gibt zwei DOM-Implementationen in Perl, die ich oben ausprobiert
habe.

== Links ==

Hier möchte ich die Links zum Thema notieren, die mir
weitergeholfen haben:

*
http://www.fh-wedel.de/~si/seminare/ws00/Ausarbeitung/6.soap/soap00.htm
- Text der FH Wedel zum Thema
* http://www.perl.com/pub/a/2001/01/soap.html - Artikel auf
www.perl.com
* http://www.w3.org/TR/SOAP/ - Spezifikation von SOAP 1.1

[{Tag Perl}]