XML/Regeln/Baumstruktur

Aus SELFHTML-Wiki
< XML‎ | Regeln
Wechseln zu: Navigation, Suche

Ein XML-gerechtes Dokument besteht aus Elementen, Attributen, ihren Wertzuweisungen, und dem Inhalt der Elemente, der aus Text oder aus untergeordneten Elementen bestehen kann, die ihrerseits wieder Attribute mit Wertzuweisungen und Inhalt haben können. Es gibt Elemente mit und ohne Attribute, Elemente, innerhalb deren viele andere Elemente vorkommen können, und solche, innerhalb deren nur Text vorkommen kann, und sogar leere Elemente, die keinen Inhalt haben können. Die Struktur, die aus diesen Bestandteilen und ihren Grundregeln entsteht, lässt sich als Baumstruktur begreifen.

Baumstruktur
<spielfilme>
 <film regie="Tom Tykwer" titel="Lola rennt">
  <beschreibung>
    <name typ="w">Lola</name> rennt für <name typ="m">Manni</name>, der 100000 Mark
    liegengelassen hat und noch 20 Minuten Zeit hat, das Geld auszuliefern.
  </beschreibung>
 </film>
</spielfilme>
Illustration eines Wurzelbaums
Illustration eines Wurzelbaums

Darstellung als Baumstruktur

Anstelle von "Baumstruktur" zu reden, könnte man auch den Vergleich zu einer Verzeichnis- und Dateistruktur verwenden. Konsequenzen für die Datenverarbeitung:

Die Datenstruktur einer XML-Datei lässt sich nicht nur genauso abbilden wie eine Verzeichnis- und Dateistruktur, sie wird von der verarbeitenden Software auch ganz ähnlich gehandhabt.

Ein XML-Parser arbeitet eine XML-Datei ab, indem er der Hierarchie folgt, die sich durch die Baumstruktur der Daten ergibt. Jedes Element, jedes Attribut, jede Wertzuweisung an ein Attribut, jeder Zeicheninhalt eines Elements wird dabei zu einem eigenen Bestandteil des Baums. Jeder dieser Bestandteile ist einzeln adressierbar.

Knoten und Knoten-Sets in der Baumstruktur

Um über die Bestandteile einer XML-Baumstruktur korrekt reden zu können, gibt es die beiden Begriffe Knoten und Knoten-Set. Beide Begriffe beleuchten die Baumstruktur einfach nur aus unterschiedlichen Blickwinkeln.

Knoten

Wenn man von Knoten redet, meint man die Bestandteile der Baumstruktur.

Jedes XML-Dokument beginnt mit einem Wurzelknoten. Dieser hat jedoch keine konkrete Ausprägung, sondern ist nur der abstrakte "Ursprung" der Daten. Erst sein unmittelbarer Abkömmling in der Baumstruktur hat eine konkrete Ausprägung: nämlich das Dokument-Element, also das äußerste, den gesamten übrigen Inhalt umfassende Element. Im obigen Beispiel ist dies das Element spielfilme. Dieser oberste Knoten unterhalb des abstrakten Wurzelknotens hat im Beispiel einen Kindknoten namens film. Aus Sicht des Knotens film ist der Knoten spielfilme der Elternknoten. Der Knoten film hat drei untergeordnete Knoten, nämlich die Attribute regie und titel sowie das Element beschreibung. In der XML-Praxis werden jedoch Attribute eines Elements anders eingestuft als der Inhalt des Elements. Bei Attributknoten spricht man von assoziierten Knoten, beim Inhalt dagegen von Kindknoten. Diese feine Unterscheidung bleibt in der obigen Abbildung unberücksichtigt.

Ein Attribut wie regie hat zwar selber noch mal einen eigenen Kindknoten, nämlich den Text Tom Tykwer, aber der Wert eines Attributes kann in XML nicht direkt adressiert werden. Jeder andere in der Baumstruktur abbildbare Bestandteil ist also ein Knoten.


Knoten-Sets

Wenn man von Knoten-Sets redet, denkt man aus Sicht der Wege zu den einzelnen Knoten.

Um einzelne Knoten zu adressieren, kann man den Pfad dorthin angeben, ganz ähnlich wie in einer Struktur aus Verzeichnissen, Unterverzeichnissen und Dateien. So hat im Beispiel das erste vorkommende Element name, das ja auch ein Knoten ist, den Pfad /spielfilme/film/beschreibung. Das zweite vorkommende Element name hat allerdings den gleichen Pfad, ebenso wie der restliche Text, der den Inhalt des Elements beschreibung bildet. Wenn man also aus Sicht eines Pfades in der Baumstruktur denkt, gibt es unterhalb eines solchen Pfades keinen, einen oder mehrere Knoten. Diese zunächst unbestimmte Anzahl Knoten, die unterhalb eines bestimmten Pfades liegen, bezeichnet man als Knoten-Set.