Arbeit mit Strömen

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

In der Informatik versteht man unter einem Strom oder Stream eine Folge zu verarbeitender Datenpakete. Zum Beispiel ist eine Textdatei eine Folge von Zeichen (eines pro Byte, eventuell auch mehr, je nach Zeichen und Codierung). Ein Programm, das diese Datei nutzt, eröffnet ein Dateihandle für die Datei, erzeugt einen Zeichenstrom und kann dann anschließend diesen Strom nach Belieben in einzelne Pakete aus einem oder mehr Zeichen zerlegen. Ströme können auch dynamisch erzeugt werden, indem man sie zum Beispiel von einem anderen Programm auf einer anderen Maschine generieren und über das Netzwerk senden läßt. Ein Strom ist eine Abstraktion, die die Quelle der Daten als irrelevant für die weitere Verarbeitung ansieht.

Zusammenfassend ist ein Strom durch die folgenden Eigenschaften charakterisiert:

  • Er besteht aus einer Folge von Datenfragmenten.
  • Die Reihenfolge dieser Fragmente ist von Bedeutung.
  • Die Quelle der Daten (Datei, Ausgabe eines anderen Programms usw.) ist dagegen irrelevant.

XML-Ströme sind nichts anderes als vorverarbeitete Zeichenströme. Die Datenfragmente bezeichnet man als Token (das Wort stammt aus der Parserterminologie), d. h. sie bestehen aus einem oder mehreren Zeichen. Jedes Token ist mit einem bestimmten Markup-Typ assoziiert. Das kann das Start-Tag eines Elements sein, das End-Tag, Textdaten in Form eines Strings oder eine PI. Die Aufspaltung von XML in diese Bestandteile ist eine relativ einfache Aufgabe für den Parser, verbunden mit minimalem Aufwand an Ressourcen und Zeit.

Was XML-Ströme und Zeichenströme unterscheidet, ist die Bedeutung des Kontexts. Man kann in einem XML-Strom nicht einfach eine zufällige Folge von Token schicken und erwarten, daß der XML-Prozessor etwas damit anfangen kann. Zum Beispiel wäre ein Strom aus zehn Start-Tags ohne abschließende End-Tags nicht besonders nützlich, auf jeden Fall wäre er kein wohlgeformtes XML. Nicht wohlgeformte Daten werden zurückgewiesen. Letzten Endes besteht der Sinn von XML eben darin, die Daten in einem Format zu verpacken, das eine gewisse Integrität der Dokumentstruktur garantiert, nicht wahr?

Diese Kontextregeln helfen sowohl dem Parser als auch dem eigentlichen Prozessor. Beim Design von XML stand der Parser im Vordergrund. Andere Markup-Sprachen verlangen dagegen eine gewisse Vorausschau des Parsers. Zum Beispiel kennt SGML keine Regel, die ein End-Tag erzwingt. Wann ein Element endet, kann für den Parser nicht oder nur sehr schwer erkennbar sein. Der Parser wird dadurch erheblich komplizierter, und diese Komplexität wiederum macht ihn langsamer und speicherhungriger.

  

  

<< 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