Elemente, Tags und Zeichendaten

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Das Dokument im Code-Beispiel Ein sehr einfaches, aber dennoch vollständiges XML-Dokument besteht aus einem einzigen Element vom Typ person. Das Element wird durch das Start-Tag <person> und das End-Tag </person> eingeschlossen. Alles, was sich zwischen dem Start-Tag eines Elements und seinem End-Tag (ausschließlich der Tags) befindet, wird Inhalt des Elements genannt. Der Inhalt dieses Elements ist der Text:

Alan Turing

Der Whitespace ist Teil des Inhalts, obwohl viele Anwendungen ihn ignorieren. <person> und </person> sind Markup (Auszeichnungen). Der String Alan Turing und der ihn umgebende Whitespace sind Zeichendaten. Das Tag ist die gebräuchlichste Form der Auszeichnung in einem XML-Dokument; es gibt allerdings noch andere Formen, auf die wir später eingehen werden.

Die Tag-Syntax

Auf den ersten Blick sehen XML-Tags fast wie HTML-Tags aus. Start-Tags beginnen mit < und End-Tags mit </. Bei beiden folgt anschließend der Name des Elements, und sie werden beide durch > geschlossen. Anders als bei den HTML-Tags können Sie jedoch neue XML-Tags erzeugen. Um eine Person zu beschreiben, benutzen Sie die Tags <person> und </person>. Um einen Kalender zu beschreiben, verwenden Sie die Tags <kalender> und </kalender>. Die Namen der Tags spiegeln im Allgemeinen die Art des Inhalts innerhalb des Elements wider und nicht die Art und Weise, wie der Inhalt formatiert wird.

Leere Elemente

Für leere Elemente , also Elemente, die keinen Inhalt haben, gibt es auch eine besondere Syntax. Ein solches Element kann durch ein einzelnes spezielles Tag repräsentiert werden, das mit < beginnt, aber mit /> endet. Zum Beispel Werden in XHTML, einer »XMLisierten« Neuformulierung des normalen HTML, die Elemente für den Zeilenumbruch und für horizontale Trenner als <br /> und <hr /> anstatt als <br> und <hr> geschrieben. Diese Elemente sind jedoch völlig äquivalent zu <br></br> sowie zu <hr></hr>. Es ist allein Ihre Sache, welche Form Sie für leere Elemente einsetzen. Nur das Start-Tag ohne dazugehörende End-Tags zu benutzen, wie etwa <br> oder <hr>, ist in XML und XHTML (im Gegensatz zu HTML) aber nicht möglich. Dies wäre eine Verletzung der Wohlgeformtheit.

Groß- und Kleinschreibung

In XML wird, anders als in HTML, zwischen Groß- und Kleinschreibung unterschieden! <Person> ist nicht das Gleiche wie <PERSON> oder <person>. Wenn Sie ein Element mit dem Tag <person> öffnen, können Sie es nicht mit dem Tag </PERSON> schließen. Es steht Ihnen frei, Großbuchstaben, Kleinbuchstaben oder beides zu benutzen, solange Sie innerhalb eines Elements konsistent bleiben.

XML-Bäume

Schauen wir uns ein etwas komplizierteres XML-Dokument an. Im folgenden Code-Beispiel sehen Sie ein Element person, das Informationen enthält, die entsprechend ausgezeichnet wurden, so dass ihre Bedeutung sichtbar wird.

<person>
   <name>
      <vorname>Alan</vorname>
      <nachname>Turing</nachname>
   </name>
   <beruf>Informatiker</beruf>
   <beruf>Mathematiker</beruf>
   <beruf>Kryptograph</beruf>
</person>

Code-Beispiel: Ein komplizierteres XML-Dokument, das eine Person beschreibt

Eltern und Kinder

Das XML-Dokument im obigen Code-Beispiel besteht besteht immer noch aus einem Element person. Allerdings enthält dieses Element jetzt nicht mehr nur undifferenzierte Zeichendaten. In ihm gibt es vier Kindelemente: ein Element name und drei Elemente beruf. Das Element name wiederum enthält ebenfalls zwei Kindelemente, vorname und nachname.

Das Element person heißt auch Elternelement des Elements name und der drei Elemente beruf. Das Element name ist das Elternelement der Elemente vorname und nachname. Das Element name und die drei Elemente beruf werden manchmal auch als Geschwister (Englisch: siblings) bezeichnet. Die Elemente vorname und nachname sind ebenfalls Geschwister.

Wie in der menschlichen Gesellschaft kann ein Elternelement mehrere Kinder haben. Doch im Gegensatz zu den Menschen gibt XML jedem Kind genau ein Elternelement, nicht zwei oder mehr. Jedes Element (mit einer Ausnahme, wie Sie bald erfahren werden) besitzt genau ein Elternelement. Das heißt, es ist vollständig von einem anderen Element eingeschlossen. Falls sich das Start-Tag eines Elements innerhalb eines Elements befindet, muss auch sein End-Tag innerhalb dieses Elements liegen. Einander überschneidende Tags wie in <strong><em>oft gesehenes Beispiel aus HTML</strong></em> sind in XML verboten. Da das Element em innerhalb des Elements strong beginnt, muss es auch dort enden.

Das Wurzelelement

Jedes XML-Dokument besitzt ein Element, das kein Elternelement hat. Dies ist das erste Element im Dokument und das Element, das alle anderen Elemente enthält. Im ersten und zweiten Beispiel spielt das Element person diese Rolle. Es erhält den Namen Wurzelelement (Englisch: root element) des Dokuments. Manchmal wird es auch als Dokumentelement bezeichnet. Jedes wohlgeformte XML-Dokument enthält genau ein Wurzelelement. Da die Elemente einander nicht überschneiden dürfen und alle Elemente mit Ausnahme der Wurzel genau ein Elternelement besitzen, formen XML-Dokumente eine Datenstruktur, die von Programmierern als Baum bezeichnet wird. Die folgende Abbildung verdeutlicht diese Beziehung anhand des obigen Code-Beispiels. Jeder graue Kasten repräsentiert ein Element. Jeder schwarze Kasten repräsentiert Zeichendaten. Jeder Pfeil repräsentiert eine Teilmengen-Beziehung.

Ein Baumdiagramm für das Code-Beispiel: Ein komplizierteres XML-Dokument, das eine Person beschreibt

Abbildung: Ein Baumdiagramm für das Code-Beispiel "Ein komplizierteres XML-Dokument, das eine Person beschreibt"

Gemischter Inhalt

Im obigen Code-Beispiel handelte es sich beim Inhalt der Elemente vorname, nachname und beruf um Zeichendaten, d.h. Text, der keine weiteren Tags enthält. Der Inhalt der Elemente personund name waren Kindelemente und einiger Whitespace. Der Whitespace wird von den meisten Anwendungen ignoriert. Diese Trennung zwischen Elementen, die nur Zeichendaten enthalten, und Elementen, die nur Kindelemente (und möglicherweise etwas Whitespace) enthalten, ist in datensatzähnlichen Dokumenten üblich. Allerdings kann XML auch für formfreiere, narrative Dokumente wie Geschäftsberichte, Zeitschriftenartikel, Studienarbeiten, Kurzgeschichten und Webseiten benutzt werden, wie im folgenden Code-Beispiel gezeigt wird.

<biographie>
   <absatz><name><vorname>Alan</vorname> <nachname>Turing</nachname></name> war einer der ersten Menschen, der wirklich die Bezeichnung <betonung>Informatiker</betonung> verdiente. Seine Arbeiten auf diesem Gebiet können nicht alle aufgezählt werden, am bekanntesten sind der nach ihm benannte <betonung>Turing-Test</betonung> sowie die <betonung>Turing-Maschine</betonung>.</absatz>

   <definition>Der <begriff>Turing-Test</begriff> ist bis heute der Standardtest, um festzustellen, ob ein Computer wirklich intelligent ist. Diese Prüfung wurde bisher noch nicht bestanden.</definition>

   <definition>Eine <begriff>Turing-Maschine</begriff> ist ein abstrakter endlicher Automat mit unendlichem Speicher, der als äquivalent zu jedem anderen endlichen Automaten mit beliebig großem Speicher angesehen werden kann. Das heißt, was für eine Turing-Maschine gilt, gilt auch für alle Turing-Maschinen, unabhängig davon, wie sie implementiert wurden.</definition>

   <absatz><name><nachname>Turing</nachname></name> war außerdem ein anerkannter <beruf>Mathematiker</beruf> und <beruf>Kryptograph</beruf>. Mit seiner Hilfe gelang es den Alliierten, den deutschen Enigma-Code zu entschlüsseln. Am <datum><tag>7.</tag> <monat>Juni</monat> <jahr>1954</jahr></datum> beging er Selbstmord, nachdem er wegen seiner Homosexualität verurteilt worden war und gezwungen wurde, weibliche Hormone einzunehmen.</absatz>
</biographie>

Code-Beispiel: Ein narrativ organisiertes XML-Dokument

Das Wurzelelement dieses Dokuments ist biographie. biographie enthält die Kindelemente absatz und definition. Es enthält außerdem einigen Whitespace. Die Elemente absatz und definition enthalten noch weitere Elemente wie begriff, betonung, name und beruf. Sie enthalten auch Zeichendaten, die nicht mit Markup umgeben sind. Bei Elementen wie absatz und definition, die Kindelemente und andere Zeichendaten als Whitespace enthalten, spricht man davon, dass sie gemischten Inhalt (Englisch: mixed content) haben. Solch gemischter Inhalt ist in XML-Dokumenten üblich, die Artikel, Essays, Geschichten, Bücher, Romane, Berichte und Webseiten enthalten und überhaupt alles, was in narrativer Form organisiert ist. In computergenerierten und -verarbeiteten XML-Dokumenten, die für solche Zwecke wie den Datenbankaustausch, die Objektserialisierung, persistente Dateiformate usw. verwendet werden, ist gemischter Inhalt eher unüblich und schwieriger zu verarbeiten. Eine der Stärken von XML ist die Leichtigkeit, mit der es an die äußerst unterschiedlichen Erfordernisse der von Menschen erzeugten und computergenerierten Dokumente angepasst werden kann.

  

<< zurück vor >>

 

 

 

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

  


Copyright © 2005 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 "XML in a Nutshell" 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