Im HTML-Teil von Listing 4.68 wird dieser Datenstrom in eine neueDatei umgeleitet, sodass letztlich eine XML-Datei im Dateisystem des Webservers ent-steht... Die geschriebene XML-Datei i
Trang 1Wie funktioniert nun diese Hilfsklassẻ Als öffnendes XML-Element wird nur mer> betrachtet, alle anderen öffnenden Elemente werden ignoriert Den Namen des Ele-
<teilneh-ments und dessen Attribute gelangen als Input-Parameter in die Methodẹ Der ser befüllt die Parameter automatisch, sodass Sie sich darum nicht kümmern müssen
SAX-Par-Als Attribute des Elements Teilnehmer werden die Teilnehmer-ID und das Geschlecht des
Teilnehmers festgehalten Diese Attribute werden aus der XML-Datei extrahiert
Aus der ID wird der Index des Datenfelds $tn bestimmt, damit der Teilnehmer eindeutig
wiedergefunden werden kann Im Anschluss daran wird ein neues Teilnehmerobjektangelegt und dem Feld zugewiesen Abschließend wird das Geschlecht des existieren-den Teilnehmers mit dem gleichnamigen Attribut aus der XML-Datei belegt, das ebenso
wie die ID über das Feld $atts aus der XML-Datei ausgelesen wurdẹ
Wenn der Parser Text zwischen einem öffnenden und einem schließenden Element
ermittelt hat, entfernt die Methode cDatặ ) führende und folgende Leerzeichen durch die trim-Methodẹ Die Daten werden dann temporär in der Eigenschaft $daten abgelegt Die Methode ende wertet die schließenden Elemente </name>, </vorkenntnis> und </vor- kenntnisse> aus Wird das schließende Element </name> entdeckt, wird die Zeichenkette aus cDatặ ), die sich in der Eigenschaft $daten befindet, dem aktuellen Teilnehmer zuge- wiesen Beim schließenden Element </vorkenntnis> wird die ermittelte Vorkenntnis aus
$daten der Liste der Vorkenntnisse des Teilnehmers hinzugefügt Diese Liste besteht zur
Vereinfachung lediglich aus einer Zeichenkette, wobei die Vorkenntnisse durch einenHTML-Zeilenumbruch getrennt sind In einer realen Anwendung würde dafür natürlichein separates Datenfeld verwendet Ist die Liste der Vorkenntnisse in der XML-Datei durch
</vorkenntnisse> vollständig, so ist der aktuelle Teilnehmer vollständig abgearbeitet.
Nach dem Parsen steht die Liste der Teilnehmer zur Verfügung, die über die
Get-Methode getTN() abgerufen werden können.
Listing 4.66 testet den SAX-Parser von PHP Dazu werden zunächst ein Parser erzeugtund die Methoden definiert, die auf die öffnenden und schließenden Elemente sowie aufDaten innerhalb der Elemente reagieren sollen
} } function cDată$p,$data){
$daten=trim($data);
if (!empty($daten)) $this->daten=$daten;
} function getTN(){
return $this->tn;
}}
Listing 4.65: Die Hilfsklasse für den SAX-Parser (Forts.)
Trang 2Im Anschluss daran wird ein Objekt der Hilfsklasse aus Listing 4.65 erzeugt und demParser zugewiesen.
Nun kann die XML-Datei zum Lesen geöffnet werden Es werden jeweils 1 024 Byte
aus-gelesen und dem Parser über den Befehl xml_parse zugeführt Der Aufruf der Methoden
der Hilfsklasse erfolgt automatisch über den Parser Sobald der gesamte Dateiinhaltdurch den SAX-Parser gelaufen ist, kann die Datei wieder geschlossen werden
Im HTML-Teil des Testprogramms stehen jetzt die ausgelesenen Teilnehmerdaten zur
Verfügung Das Datenfeld $tn der Teilnehmer wird über das Hilfsobjekt abgeholt und die Daten der Teilnehmer werden in der foreach-Schleife ausgegeben.
Die Ausgabe besteht aus der Teilnehmer-ID, gefolgt von dem Aufruf der
toString()-Methode jedes Teilnehmers:
} } fclose($fp);
?>
<html><body>
<?php $tn=$parserObjekt->getTN();
foreach ($tn as $index => $wert){
echo 'Teilnehmer ID '.$index.'<br>'; echo $wert;
Trang 3Name: Ulf Schmidt Geschlecht: m Vorkenntnisse:
Grundlagen HTML Java
Teilnehmer ID 43 Name: Clair Grube Geschlecht: w Vorkenntnisse:
JavaScript
XML als Baum: DOM
Die zweite Art der Verarbeitung, die PHP 5 bietet, ist die Rekonstruktion des Baums aus den Daten der XML-Datei im Arbeitsspeicher des Servers
XML-Als Beispiel wird wiederum die XML-Datei aus Listing 4.63 verwendet Sobald die Datei
geladen wurde, stehen deren Inhalte in der Objektreferenz $doc zur Verfügung Wie Sie erkennen, ist die load-Methode eine statische Methode der Klasse DOMDocument und
$doc ein Objekt dieser Klasse, das über eine Vielzahl von Methoden verfügt, um auf die
Daten zuzugreifen
Eine dieser Methoden lautet getElementsByTagname Dabei werden alle Inhalte eines
Ele-menttyps in einer Liste zurückgegeben Im Beispiel in Listing 4.67 werden alle
Vorkennt-nisse der Teilnehmer eines Seminars in der Liste $vorkenntVorkennt-nisse gespeichert und im
HTML-Teil des Skripts nacheinander mit Zeilenumbruch ausgegeben
<?php $doc=DOMDocument::load('beispiel.xml');
$vorkenntnisse=$doc->getElementsByTagname('vorkenntnis');
?>
<html><body>
<?php echo 'Anzahl der Vorkenntnisse: '.$vorkenntnisse->length.'<br>';
Trang 4Aus den Daten der eingelesenen XML-Datei ergibt sich dann die folgende Ausgabe:
Anzahl der Vorkenntnisse: 4 Grundlagen HTML Java
JavaScript Visual Basic 6 Die einzelnen Methoden von DOMDocument hier aufzulisten und zu beschreiben, würde
einige Seiten füllen Kein Entwickler lernt diese Methoden auswendig, sondern sucht beiBedarf die Methoden aus einer Onlinedokumentation, die ihm bei der Lösung seiner
konkreten Problemstellung behilflich sind Die bereitgestellten Dienste von ment können Sie beispielsweise unter http://de3.php.net/book.dom nachlesen Bitte achten Sie dabei auf die Endung dom, und nicht com der Homepage! Dort befinden sich auch
DOMDocu-zahlreiche Quellcodebeispiele zum Umgang mit DOM
In dem nächsten Beispiel wird die Klasse dazu verwendet, zunächst ein Objekt im Speicher des Servers aufzubauen und dieses Objekt anschließend als XML-Datei abzuspeichern
DOM-Auf diese Weise können Sie genausogut alle Eigenschaften eines Objekts über eineselbstdefinierte Methode in ein DOM-Objekt überführen, um die Persistenz des Objektssicherzustellen
In Listing 4.68 erzeugen Sie zunächst ein neues DOM-Dokument in der XML-Version 1.0mit westeuropäischem und amerikanischem Zeichensatz Das XML-Dokument soll men-schenlesbar formatiert werden, was sich insbesondere in entsprechenden Zeilenumbrü-
chen hinter den Ende-Elementen und in Einrückungen bei verschachtelten Elementen
bemerkbar macht Wenn Sie die XML-Datei ausschließlich maschinell verarbeiten, nen Sie auf die Formatierung verzichten, die Verarbeitung etwas beschleunigen und dieDateigröße leicht minimieren
kön-Jedes XML-Element wird über die DOM-Methode createElement erzeugt und mit der Methode appendChild dem DOM-Baum hinzugefügt Die Methode setAttribute definiert
den Namen und den aktuellen Wert eines Attributs in einem XML-Element Wenn Sie
createTextNode verwenden, können Sie Text hinter dem zuletzt geöffneten XML-Element
platzieren Dies ist beispielsweise bei dem Namen des Seminars der Fall
Profitipp
In einer prozeduralen Programmiersprache kann ein Entwickler nach einigen JahrenErfahrung meist die gesamte Sprache auswendig In der Objektorientierung ist diesaufgrund der Vielzahl der Klassen und Methoden für verschiedene Zwecke nichtmehr möglich Hier gilt die Regel: Sie müssen nur wissen, wo die Funktionen stehen,die Sie benötigen! Und Sie müssen so viel von der Sprache PHP beherrschen, dass Siedie Definitionen der Funktionalität verstehen und anwenden können!
Trang 5Wenn Sie mehrere Elemente befüllen, können Sie die Methoden createElement und appendChild in einer Schleife anwenden, um beispielsweise zuvor aus einer Datenbank
ausgelesene Werte einem XML-Dokument hinzuzufügen
Die Methode saveXML speichert das DOM-Objekt nicht in einer Datei, sondern erzeugt
einen Datenstrom Im HTML-Teil von Listing 4.68 wird dieser Datenstrom in eine neueDatei umgeleitet, sodass letztlich eine XML-Datei im Dateisystem des Webservers ent-steht
<?php $dom=new DOMDocument('1.0','iso-8859-1');
// XML-Dokument zusammensetzen $seminare->appendChild($php);
if (fwrite($fh,$daten)===false){
echo 'Konnte XML-Datei nicht schreiben!';
} else{
echo 'XML-Datei erfolgreich geschrieben!';
Listing 4.68: Mit DOM eine XML-Datei schreiben
Trang 6Die geschriebene XML-Datei ist ein vereinfachtes Beispiel der Seminardatei und wird inListing 4.69 dargestellt.
Geprüftes XML: DTD und Schema
Wie Sie in den letzten Beispielen bereits gesehen haben, können Sie die Namen der mente frei vergeben In diesem Kapitel werden Sie nun sehen, wie Sie anhand einerDokumenttypdefinition oder anhand eines XML Schemas Regeln für diese Elementevergeben können Diese Regeln werden meist in einer separaten Datei mit der Endung
Ele-.dtd bzw .xsd abgelegt.
PHP bietet Ihnen die Möglichkeit, durch das Parsen nicht nur die Wohlgeformtheit derXML-Datei sicherzustellen, sondern auch die Gültigkeit in Bezug auf einen solchen Satzvon Regeln
Um die Beispieldatei nach einer DTD mit PHP 5 prüfen zu lassen, müssen Sie zunächstdie Dokumenttypdefinition angeben, nach der Sie die Prüfung vornehmen wollen Lis-
ting 4.70 zeigt die Verbindung der beispiel.xml mit der seminare.dtd Datei Mit seminare ist
der notwendige Wurzelknoten, also das oberste Element der XML-Datei, gemeint Andieser Stelle beginnt auch die Beschreibung der Regeln innerhalb der DTD
Als Nächstes müssen in Listing 4.71 die Regeln definiert werden Die DTD ist eine eigene
Sprache mit eigener Syntax Das Wurzelelement seminare besteht aus Elementen seminar,
} fclose($fh);
Trang 7wobei mindestens ein Seminar angegeben werden muss Dies ist an dem + im Listing zu
erkennen
Ein Seminar besteht wiederum aus genau einem Namen, genau einem Dozenten undoptional (?) aus einer Teilnehmerliste Außerdem hat ein Seminar zwangsweise eine ID.Bei dem Namen und dem Dozenten handelt es sich um beliebigen Text und/oder Zah-
len Das Format PCDATA (parsed character data) kann leider nicht genauer spezifiziert
werden, was beim Einsatz eines Schemas möglich wäre
Die Teilnehmerliste kann leer sein oder aus beliebig vielen Teilnehmern (*) bestehen.Beim Teilnehmer muss wiederum ein Name angegeben werden und keine bzw genaueine Liste von Vorkenntnissen Der Teilnehmer besitzt zwei weitere Attribute, die zwin-gend angegeben werden müssen, nämlich eine ID und das Geschlecht Über das Schlüs-
selwort #IMPLIED können Sie übrigens optionale Attribute definieren.
Die Liste der Vorkenntnisse besteht aus Elementen vom Typ Vorkenntnis Dieses Element
besteht wiederum nur aus Text, der mit Zahlen vermischt sein kann
Listing 4.72 zeigt, wie das Einlesen der XML-Datei mit anschließender Prüfung gen wird Wie gewöhnlich wird das XML-Dokument mit dem DOM-Parser aus demDateisystem des Servers in den Speicher geladen Dabei erfolgt das Prüfen auf Wohlge-
vollzo-formtheit Der Dokumentbaum kann nun über die Methode validate() des DOM-Objekts
sehr leicht auf Gültigkeit geprüft werden, Sie müssen also keine weitere rung vornehmen
Programmie-Dabei wird gegen die DTD geprüft, die in der XML-Datei angegeben wurde Die Methode liefert TRUE zurück bei einer erfolgreichen Prüfung, ansonsten FALSE.
validate-<!ELEMENT seminare (seminar+)>
<!ELEMENT seminar (name,dozent,teilnehmerliste?)>
<!ATTLIST seminar
id NMTOKEN #REQUIRED
>
<!ELEMENT name (#PCDATA)>
<!ELEMENT dozent (#PCDATA)>
<!ELEMENT teilnehmerliste (teilnehmer*)>
<!ELEMENT teilnehmer (name,vorkenntnisse?)>
<!ATTLIST teilnehmer
id NMTOKEN #REQUIRED geschlecht NMTOKEN #REQUIRED
>
<!ELEMENT vorkenntnisse (vorkenntnis+)>
<!ELEMENT vorkenntnis (#PCDATA)>
Listing 4.71: Die passende DTD
Trang 8Wenn Sie anstelle der DTD ein XML Schema zur Prüfung Ihrer XML-Dateien verwendenmöchten, können Sie wesentlich präzisere Prüfungen vornehmen Sie können beispiels-weise Formate für Telefonnummern, Datums- und Währungsangaben oder für E-Mail-Adressen vorgeben Außerdem ist ein XML-Schema selbst eine XML-Datei mit einem
vordefinierten Satz von Elementen, ähnlich wie bei einer HTML-Datei das <h1> eine
vor-definierte Bedeutung hat, nämlich die einer Hauptkapitelüberschrift
Andererseits ist aufgrund der vielen Möglichkeiten die Sprache des XML Schemas auchdeutlich komplexer und schwieriger von einem Menschen zu lesen und zu schreiben.Listing 4.73 zeigt das entsprechende XML Schema für die Seminardatei, die noch nichteinmal wesentlich präziser ist als die DTD aus Listing 4.71 Erkennen Sie die komplexereSyntax?
Zunächst werden die XML-Elemente Dozent, Name, Vorkenntnis und Seminar vergeben.
Ein Seminar besteht aus einem Namen, einem Dozenten und einer Teilnehmerliste, diespäter definiert wird Ein Element wie das Seminar, das aus anderen Elementen besteht,
wird als „ komplexer Typ“ bezeichnet Dabei kann mit mixed="true" noch angegeben
werden, dass die in dem komplexen Typ enthaltenen Elemente in einer beliebigen henfolge angeordnet werden können
Rei-Zusätzlich besitzt ein Seminar ein Attribut ID, das stets angegeben werden muss (use="required") Die Alternative dazu ist use="optional" Mit type="xs:string" wird der
Datentyp des Attributs festgelegt XML-Schema besitzt ähnlich wie in einer miersprache die vordefinierten Datentypen
echo 'Die Datei beispiel.xml NICHT ist gültig!';
Trang 9쮿 xs:boolean
쮿 xs:date
쮿 xs:time
Sie können sich jedoch auch weitere Datentypen definieren Im Fall des Seminars wurde
lediglich xs:string verwendet, obwohl ein Seminar stets aus dem Buchstaben S, gefolgt
von einer Zahl, besteht Die Angabe im XML Schema ist zwar korrekt, könnte aber nochpräzisiert werden, da beispielsweise andere Buchstaben als „ S“ oder weitere Buchstabennicht in der ID gestattet sind
Im nächsten Schritt definieren Sie, dass Seminare aus einer Liste von Elementen des Typs
Seminar bestehen.
Nun wird beschrieben, wie ein Teilnehmer auszusehen hat Er besteht aus einem Namen
und Vorkenntnissen, wobei Vorkenntnisse nicht zwingend erforderlich sind (minOccurs=
"0") Sie können also neben Attributen auch Elemente als optional deklarieren Zusätzlich besteht ein Teilnehmer noch aus den zwei Pflichtattributen Geschlecht und ID, die eben-
falls noch genauer spezifiziert werden könnten
Bei dem Geschlecht ist diese Spezifizierung exemplarisch vorgenommen worden Dazu
definieren Sie einen neuen Datentyp, der gesch genannt wurde Er basiert auf einer chenkette (base="xs:string"), deren Werte jedoch eingeschränkt werden Dazu wird ein regulärer Ausdruck (pattern) verwendet, der nur die Zeichen m oder w zulässt.
Zei-Ein regulärer Ausdruck ist selbst eine Zeichenkette, die als Beschreibung von Mengenvon Zeichenketten mithilfe eines eigenen, sehr komplexen und mächtigen Regelwerksdient Reguläre Ausdrücke stellen also eine Art Filterkriterium für Texte dar, indem derjeweilige reguläre Ausdruck in Form des Musters mit einem gegebenen Text aus derXML-Datei abgeglichen wird Im XML Schema wird auf diese Weise ein Filter für dieObermenge der Zeichenketten angegeben
Im Anschluss an die Definition eines Teilnehmers mit dem neuen Datentyp Geschlecht
wird in Listing 4.73 die Teilnehmerliste definiert, die aus mindestens einem Teilnehmer
(da minOccurs nicht angegeben wurde, ist die Mindestzahl automatisch 1) bis unendlich vielen Teilnehmern (maxOccurs="unbounded") besteht.
Abschließend wird noch definiert, dass die Liste der Vorkenntnisse aus mindestens einerVorkenntnis besteht Auch hier ist keine obere Grenze der Vorkenntnisse vorgesehen.Damit ist das XML-Format der Seminare ausreichend beschrieben Beachten Sie bitte,dass die Reihenfolge der Definitionen beliebig ist Sie können beispielsweise die Teilneh-merliste einsetzen, bevor das Element der Teilnehmerliste definiert wurde
Trang 10<xs:attribute name="geschlecht" type="gesch" use="required" />
<xs:attribute name="id" type="xs:integer" use="required" />
Trang 11Genau wie bei der Prüfung der XML-Beispieldatei anhand der DTD muss auch dasSchema auf eine XML-Datei angewendet werden In diesem Beispiel wird wieder dieXML-Datei aus Listing 4.63 verwendet Ein Hinweis auf das zugehörige Schema inner-halb der XML-Datei ist nicht notwendig.
In Listing 4.74 erfolgt nun die Prüfung auf Gültigkeit der beispiel.xml gegen das Schema seminare.xsd Nach dem Laden der XML-Datei in das Document Objekt Model erfolgt über die bereits im DOM definierte Methode schemaValidate die Prüfung unter Angabe des Schemas Diese Prüfung liefert genau wie die DTD-Prüfung im Erfolgsfall ein TRUE und andernfalls ein FALSE zurück
Sie erkennen auch hier, dass die eigentliche Prüfung leicht zu programmieren ist; diebereits von PHP 5 vorgegebenen Klassen und Objekte mit ihren Methoden nehmenIhnen die Arbeit des Parsens und der Prüfung ab Die Prüfung im Schema zu definierenist allerdings bereits komplex genug Andererseits wird das XML Schema die DTD-Spra-che mittelfristig ablösen, da das Schema selbst von einem XML-Parser interpretiert wer-den kann
echo 'Die Datei beispiel.xml NICHT ist gültig!';
Trang 12Transformation von XML zu anderen Ausgaben: XLST
Es wurde bereits erwähnt, dass das XML-Format insbesondere dem flexiblen tausch zwischen größeren Applikationen, beispielsweise aus dem B2B-Bereich, dient.Ein Datenstamm wird also über das XML-Format von einem Datenmodell in ein anderesDatenmodell überführt Dies ist meist deshalb nötig, weil die verschiedenen Applikatio-nen verschiedene ER-Modelle ihrer Datenbanken hinterlegt haben
Datenaus-Um eine Konvertierung zwischen XML-Formaten vorzunehmen, wurde eine eigeneKonvertierungssprache entworfen, die XLST (Extensible Stylesheet Language Transfor-mation) Die XSL ist eine in XML definierte Familie von Transformationssprachen zurDefinition von Layouts für XML-Dokumente Man trennt also den reinen Datenstamm inder XML-Datei von dessen Darstellung in einer XSL-Datei XLST ist eine Transforma-tionssprache wie auch XSL-FO (Extensible Stylesheet Language – Formating Objects).Mit einer XSL-FO-Beschreibung können Sie beispielsweise eine XML-Datei in eine PDF-Datei zum Druck aufbereiten Wie die Daten aus der XML-Datei dargestellt werden sol-len, bestimmen Sie in der separaten XSL-FO-Beschreibung, ähnlich, wie Sie in einemseparaten Schema die Gültigkeit der Daten definieren
Zum Einstieg wird in diesem Kapitel eine Transformation in ein anderes XML-Formatvorgenommen Da der Befehlssatz der HTML-Sprache als Untermenge von XML aufge-fasst werden kann, können Sie die gegebene XML-Datei aus Listing 4.63 unter Verwen-dung einer XLST-Transformationsdatei direkt in eine HTML-Datei umwandeln DasPrinzip der Transformation wird in Abbildung 4.17 verdeutlicht
Listing 4.75 zeigt eine solche Transformationsdatei Sie enthält neben dem
darzustellen-den HTML-Rumpf von darzustellen-den Elementen <html> bis </html> zusätzliche Anweisungen,
wie die Daten aus der XML-Datei in die HTML-Ausgabe eingepflegt werden sollen Eine
solche Anweisung lautet beispielsweise <xsl:value-of select="seminare/seminar/name"/>.
Dadurch wird in dem Name des ersten Seminars in der XML-Datei extrahiert und andiese Stelle platziert Auf Attribute eines XML-Elements können Sie durch ein vorange-
stelltes „ @“ zugreifen So gibt <xsl:value-of select="seminare/seminar/@id"/> die ID des
Seminars zurück
Profitipp
Wenn Sie die DTD oder das Schema komplett von Hand erstellen, ist dies zwar einegute Übung, jedoch ist der Aufwand bis zu einem erfolgreichen Ergebnis gerade beigrößeren Dokumenten sehr hoch Alternativ dazu existieren bereits Tools, mit denenSie eine DTD oder ein XML Schema aus einer bestehenden XML-Datei generierenkönnen Dies ist auf den ersten Blick unlogisch, jedoch können die DTD oder dasSchema als Vorlage für eine Überarbeitung des Regelwerks dienen Eine solche
Generierung können Sie unter anderem auf der Homepage http://www.hitsw.com/ xml_utilites/ vornehmen.
Trang 13Abbildung 4.17: Prinzip einer XSL-Transformation in ein HTML-Dokument
Da es sich bei XLST um eine eigene vollständige Programmiersprache handelt, könnenSie auch Schleifen verwenden Im Beispiel wird eine Schleife verwendet, um die Namen
aller Teilnehmer auszugeben Die Zeile <xsl:for-each liste/teilnehmer"> nimmt Bezug auf den Pfad im Baum des XML-Dokuments und erinnert gleichzeitig an die foreach-Schleife von PHP Die Namen der Teilnehmer werden dann in eine HTML-Auflistung innerhalb der HTML-Tags <li> </li> eingebettet.
<p align="left" style="font-family:Tahoma; font-size:14px;">
Name des Seminars: <xsl:value-of select="seminare/seminar/name"/><br/>
ID des Seminars: <xsl:value-of select="seminare/seminar/@id"/><br/>
Dozent des Seminars: <xsl:value-of select="seminare/seminar/dozent"/>
Trang 14Die Aufbereitung in ein HTML-Dokument wurde mit Listing 4.75 beschrieben Nun fehlt
noch die Anwendung der Transformation Da es sich sowohl bei der beispiel.xml als auch bei der beispiel.xls um XML-Dateien handelt, werden beide zunächst als DOM-Objekt
geladen Dies geschieht in der Testdatei aus Listing 7.48
Die Transformation erfolgt über einen Transformationsprozessor, der – wie üblich in der
Objektorientierung – zunächst über den new-Operator erzeugt werden muss Sie ten dann ein Prozessorobjekt $proc mit einem Satz von eigenen Methoden/Diensten, die dieser Prozessor bereitstellt Eine dieser Methoden, importStylesheet, besteht darin, eine
erhal-Transformationsbeschreibung in den Prozessor zu laden Ein Beschreibungsobjekt steht
in der Objektreferenz $xsl bereits zur Verfügung Die Methode transformToXML
transfor-miert die im Eingabeparameter angegebene Datei nun in ein anderes Format In unseremFall wird dabei eine HTML-Datei erzeugt, die dann direkt ausgegeben wird
In der beschriebenen Kombination von XML- und XSL-Datei führt dies zu der folgendenAusgabe:
Name des Seminars: PHP5 objektorientiert
ID des Seminars: S1120 Dozent des Seminars: Dr Frank Dopatka Teilnehmer:
Trang 154.5 Ein Web Service in PHP
Eine besondere, verteile Art der objektorientierten Programmierung stellen Web Servicesdar Ein Web Service ist ein Dienst, also eine Methode bzw eine Funktionalität, diezumeist in einem Intranet bereitgestellt wird
Web Services orientieren sich an der serviceorientierten Architektur (SOA) und vereinenverteilte und objektorientierte Programmierstandards, wobei sie insbesondere betriebs-wirtschaftliche Lösungen fokussieren Eine Anwendung kann einen Web-Service überihren Uniform Resource Identifier (URI) eindeutig identifizieren und ihren Dienst aus-führen, der mit seinem Ergebnis antwortet
Ein besonderes Augenmerk liegt dabei auf der Kommunikation zwischen dem Nutzerdes Dienstes und dessen Anbieter Diese Kommunikation erfolgt über SOAP (SimpleObject Access Protocol) Dabei handelt es sich um ein Netzwerkprotokoll, mit dem Datenzwischen unterschiedlichen Systemen ausgetauscht und entfernte Prozeduraufrufe, sogenannte Remote Procedure Calls (RPC), durchgeführt werden können Dabei müssendie verschiedenen Systeme nicht in derselben Programmiersprache implementiert sein
So kann ein in PHP geschriebener Web Service prinzipiell von einer Java-Anwendunggenutzt werden und umgekehrt
Listing 4.77 zeigt einen ersten in PHP implementierten Web Service Dabei soll die
einfa-che Funktion addiere im Intranet bereitgestellt werden, die zwei Eingabeparameter erhält
und einen Wert als Ergebnis zurückgibt
Dazu wird zunächst ein neuer SOAP-Server instantiiert, der als Parameter die URIerhält, unter der der Server zu finden ist Im zweiten Schritt wird die zu veröffentlicheFunktion dem Server hinzugefügt Abschließend wird eine eingehende Dienstanfrage
über die Methode $server->handle() des Serverobjekts verarbeitet und die Antwort
auto-matisch an den Aufrufer des Dienstes zurückgesendet
Hinweis
Selbstverständlich kann im Rahmen dieses Buches keine vollständige Beschreibungder Sprachen DTD, Schema und XSL(T) erfolgen Zu diesem Zweck existieren bereitseine Vielzahl von Literatur sowie Internetquellen In diesem Buch sollen Sie nur dieprinzipiellen Technologien mit grundlegenden Beispielen zum Einstieg sowie denEinsatzzweck dieser Technologien kennen lernen