DOM und Perl

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

DOM ist eine Empfehlung des World Wide Web Consortium (W3C). Da DOM von Anfang an als sprachneutrale Schnittstelle zur Darstellung eines XML-Dokuments im RAM ausgelegt war, gibt es DOM-Versionen in so unterschiedlichen Sprachen wie Java, ECMAscript (Eine standardisierte Version von JavaScript), Perl und einigen anderen. In Perl gibt es mit XML::DOM und XML::LibXML sogar verschiedene Implementierungen.

Während SAX als Schnittstelle auf Handlermethoden aufgebaut ist, besteht DOM aus einer Anzahl von Klassen sowie den zugehörigen Methoden, die jeweils einen bestimmten Typ XML-Markup repräsentieren. Jede Instanz dieser Klassen repräsentiert einen Ausschnitt des Dokumentbaums und bietet Methoden, mit denen man Knoten hinzufügen, entfernen oder ändern kann. Normalerweise werden diese Objekte von einem sogenannten Factory-Objekt erzeugt. Der Sinn dieses Objekts ist es, daß nur die Factory initialisiert werden muß, während alle anderen Objekte durch die Factory konfiguriert werden.

In DOM wird jedes Stück XML (Elemente, Text, Kommentare usw.) als Knoten aufgefaßt. Dem Knoten entspricht eine Instanz der Klasse Node. Von der Klasse Node sind spezifischere Klassen abgeleitet, die den verschiedenen Markup-Typen entsprechen, zum Beispiel Element, Attr (Attribut), ProcessingInstruction, Comment, EntityReference, Text, CDATASection und Document. Diese Klassen sind die Bausteine jedes XML-Baums in DOM.

Darüber hinaus kennt der Standard verschiedene Klassen, die als Container für andere Knoten dienen. Ihre Aufgabe ist es, XML-Fragmente bequem an einen anderen Platz zu verschieben oder zu kopieren. Zu diesen Klassen gehört die NodeList, eine geordnete Liste von Knoten, zum Beispiel die Liste der Kindknoten eines Elements. Ferner die NamedNodeMap, eine ungeordnete Menge von Knoten. Man findet diese Klassen häufig als Argument- oder Ergebnistyp einer Methode. Beachten Sie, daß diese Objekte normalerweise live sind. Damit ist gemeint, daß sich Änderungen an diesen Objekten unmittelbar im Dokument auswirken. Sie sind keine Kopien, sondern wirklich Teile des Dokuments.

Abgesehen von den Klassen- und Methodennamen, Argumenten und Ergebnistypen überläßt DOM viele Details und ganz besonders die Interna den konkreten Implementierungen. Details wie Speicherverwaltung, Datenstrukturen und Algorithmen sind völlig außen vor, da sich die Programmiersprachen und Bedürfnisse der Anwender doch stark unterscheiden. DOM entspricht der Beschreibung eines Schlüssels. Ein Schmied kann ein Schloß anfertigen, in das der Schlüssel paßt. Sie wissen, daß Sie die Tür damit öffnen können, haben aber keine Ahnung, wie das funktioniert. Die Schnittstelle erlaubt es, eine Anwendung zu schreiben, die auf dem Modul basiert. Effizienz und Geschwindigkeit sind andere Themen.

DOM ist ein sehr umfangreicher Standard. Aus diesem Grund werden Sie feststellen, daß sich die verschiedenen Implementierungen in sehr unterschiedlichem Maß an diesen Standard halten. Die Situation wird durch die Existenz zweier verschiedener Versionen nicht gerade verbessert, in naher Zukunft werden es sogar drei sein. DOM1 gibt es seit 1998, DOM2 ist jüngeren Datums, und im Augenblick laufen die Arbeiten an DOM3. Der Hauptunterschied zwischen den Versionen 1 und 2 ist wie bei SAX die Einführung von Namensräumen. Wenn Sie an Namensräumen nicht interessiert sind, genügt Ihnen DOM1 vollkommen.

  

  

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