Kapitel 26
XML
722
Nun ist das obige XML-Dokument nur ein Beispiel für eine konkrete E-Mail-Adressenliste.
Man könnte z.B. im ersten Element
<person> das Tag
einfach weglassen und hätte dennoch ein Dokument, das den XML-Syntaxregeln entspricht.
Freilich wäre das Dokument als Adressenliste dann wertlos. Nun kann man mit XML
Regeln festlegen, wie ein E-Mail-Adressverzeichnis logisch aufgebaut sein muss. Dazu wird
eine Document Typ Definition (DTD) angelegt. Man kann sie einfach unter die erste Zeile des
Dokuments schreiben. Das folgende Listing zeigt ein Beispiel:
Diese DTD besagt zum Beispiel dass das Element
<gruppe> genau ein Element <bezeich-
nung>
und danach beliebig viele Elemente <person> enthält. Ein Element <person> wie-
derum enthält genau ein Element
<name> und danach ein oder mehrere Elemente <email>.
Durch die Möglichkeit der DTDs wird XML eigentlich erst zur richtigen Metasprache. Wie
das Beispiel andeutet, kann man mit XML eine regelrechte Sprache zur Definition von
E-Mail-Adressverzeichnissen definieren.
26.3 Ein XML-Dokument als Baum
Ein XML-Dokument kann man sich als Wurzelbaum vorstellen. Abbildung 26.2 zeigt die
Struktur unseres Beispieldokumentes. Ein Wurzelbaum ist ein spezieller gerichteter Graph
ohne Zyklen und mit genau einer Wurzel. Er bildet wie ein richtiger Baum in der Natur eine
verzweigte Struktur. Allerdings zeichnet man die Bäume der Graphentheorie so, dass die
Wurzel oben ist anstatt unten. Allgemein besteht ein gerichteter Graph aus Knoten und Pfei-
len (gerichteten Kanten), die jeweils von einem Knoten zu einem anderen führen. Die Knoten
(nodes) repräsentieren Elemente und Texte des XML-Dokumentes und sind in Abbildung
26.2 als Kästen dargestellt. Die Wurzel (root) ist der einzige Knoten, in den kein Pfeil hinein-
führt. In unserem Beispieldokument ist das das Element
<gruppe>. Es repräsentiert das
gesamte Dokument. Von dem Wurzelelement
<gruppe> führen drei Pfeile in Knoten mit
den Namen
<bezeichnung> und <person>. Man nennt sie die Kinder (child nodes) des Kno-
tens
<gruppe>. Knoten mit dem selben Elternknoten nennt man Geschwister (siblings). So
sind die beiden
<person>-Knoten und der <bezeichnung>-Knoten allesamt Geschwister.
Die Knoten
<name> und <bezeichnung> sind dagegen keine Geschwister, da sie unter-
schiedliche Elternknoten haben. Auch der links stehende Knoten
<name> (Elternknoten des
Textknot ens
"Sabrina Maier") und der rechts stehende Knoten <name> (Elternknoten des
Textknot ens
"Tom Kahlenbaum") sind keine Geschwister. Beide sind zwar auf derselben Hie-
rarchieebene des Baums, haben aber unterschiedliche Elternknoten. Textknoten, die Textpas-
sagen des Dokuments repräsentieren, haben keine Kinder. Sie sind Blätter des Baums.
<name>Sabrina Maier</name>
<?xml version="1.0" ?>
<!DOCTYPE gruppe [
<!ELEMENT gruppe (bezeichnung, person*)>
<!ELEMENT person (name, email+)>
]>
...

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.