Stromorientierte Anwendungen

(Auszug aus "Perl & XML" von Erik T. Ray & Jason McIntosh)

Die eventorientierte bzw. Stromorientierte Verarbeitung eignet sich gut für eine Reihe typischer Aufgaben, wie zum Beispiel die folgenden:

Filter

Ein Filter erzeugt im wesentlichen eine Kopie des eingegebenen XML-Dokuments, abgesehen von einigen kleineren Änderungen. Wenn wir zum Beispiel jedes <A>-Element in ein <B>-Element umwandeln wollen, dann geschieht dies über einen Filter. Den entsprechenden Handler zu schreiben ist ausgesprochen einfach. Er gibt einfach alles aus, was er bekommt, nur bei Start-Tags und End-Tags wird eventuell der Tagname geändert.

Selektoren

Wenn man nur an einer bestimmten Information aus dem Dokument interessiert ist, kann man das mit einem Selektor lösen. Dieses Programm schaut sich die eintreffenden Events an, macht aber normalerweise gar nichts – bis das eintrifft, worauf das Programm gewartet hat. Das kann ein bestimmter Tagname sein, ein Attribut oder was auch immer. Wir bezeichnen dieses Signal als den Schlüssel des Selektors. Sobald der Schlüssel erkannt wurde, ändert der Selektor sein Verhalten. Ab jetzt gibt er die Daten unverändert weiter, wie ein Filter. Man kann den Selektor dann auch leichte Änderungen vornehmen lassen, die Grenzen zum Filter sind fließend. Oft gibt es weitere Signale, die den Selektor zu seinem ursprünglichen Verhalten bewegen, und möglicherweise springt er auch zwischen den Zuständen hin und her.

Akkumulatoren (Summarizer)

Dieser Programmtyp liest ein Dokument, um anschließend eine Statistik zu erzeugen. Ein Rechnungsprogramm könnte zum Beispiel Transaktionen zählen und an eine Tabellenkalkulation übergeben. Ein anderes Programm könnte die Titel verschiedener Abschnitte zu einem Inhaltsverzeichnis zusammenstellen. Ein Indexgenerator könnte eine Liste von Schlüsselwörtern bzw. Links auf diese Schlüsselwörter pflegen. Der Handler dieses Programmtyps bewahrt normalerweise gewisse Daten aus dem Dokument im Hauptspeicher auf, um sie anschließend leicht modifiziert auszugeben, wenn der Parser seine Arbeit beendet hat.

Konverter

Dieser besonders häufig angewandte Programmtyp wandelt unser XML-Dokument in ein anderes Ausgabeformat um. Es kann sich dabei durchaus auch um eine andere XML-Anwendung handeln. Zum Beispiel gibt es Konverter zur Umwandlung von DocBook XML in HTML oder XHTML. Bei Konvertern erreicht man meistens sehr schnell die Grenzen der Eventströme – das entstehende Programm wird einfach zu kompliziert. Umgekehrt ist der Lohn besonders hoch, wenn man es mit Events schafft – der Performancegewinn ist oft enorm.

Die Verarbeitung von XML-Strömen ist also für eine ganze Reihe typischer Anwendungen hervorragend geeignet, hat aber ihre Grenzen. Letztendlich liegt die Steuerung des Programms immer beim Parser, und der hat seinen eigenen Kopf. Ihr Programm hat die Daten zu nehmen, und zwar in genau der Reihenfolge, die der Parser festlegt. Es gibt kein »Augenblick, können wir nochmal 8 Schritte zurückspringen?« und auch kein »Können wir vielleicht kurz schauen, was in diesem Element als letztes kommt?« Sie können Ihrem Programm ein Gedächtnis geben und eigene Datenstrukturen aufbauen. Sind diese Strukturen gut gemacht, kann man über sie auf zurückliegende Ereignisse zugreifen. Irgendwann ertappt man sich dann aber dabei, daß man im Prinzip einen eigenen Dokumentbaum aufbaut, also eigentlich schon in der baumorientierten Programmierung angelangt ist. In Baumorientierte Verarbeitung werden wir uns darum noch ausführlich mit Bäumen befassen.

Mit diesen Grundlagen zur Verarbeitung von XML-Strömen ausgerüstet, können wir nun auf speziellere Beispiele eingehen und echte Anwendungen schreiben.

  

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Perl & XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2003 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Perl & XML" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de