20.5.1 | Elemente |
Elemente sind das grundlegende Strukturierungsmittel in XML. Ein Element repräsentiert jeweils einen bestimmten Strukturbestandteil und kann andere Elemente beinhalten, wodurch sich insgesamt eine baumartige Schachtelung ergibt. Das folgende Beispiel zeigt, wie die Definition eines Elements in der DTD aussieht. Es definiert ein Element zur Modellierung eines Buchs, das aus einem bis beliebig vielen Kapiteln besteht:<!ELEMENT BOOK (CHAPTER+)>+ ist ein Quantor, der angibt, wie oft das betreffende Element (oder die Gruppe von Elementen) vorkommen darf. Ohne Quantor muss das Element genau einmal vorkommen. Die Notation für die Angabe der eingebetteten Elemente ähnelt der von regulären Ausdrücken, es gibt dieselben Quantoren:Ebenso können mit runden Klammern ((...)) Gruppen gebildet werden, auf die wiederum Quantoren angewendet werden können. Das folgende Beispiel ergänzt die obige Elementdefinition um ein Element TITLE, das den Titel der Kapitel aufnimmt. CHAPTER und TITLE werden hierbei gruppiert:
- ?
Das Element darf null oder einmal vorkommen.- +
Das Element muss mindestens einmal vorkommen (1-n).- *
Das Element kann beliebig oft vorkommen (0-n).<!ELEMENT BOOK ((CHAPTER,TITLE)+)>Ein Element kann auch mehrere Unterelemente mit unterschiedlichen Quantoren haben:<!ELEMENT BOOK (PREFACE, CHAPTER+, INDEX?)>Bei Elementen, die Unterelemente haben, sagt man auch, dass sie einen Element-Inhalt haben. Den »inneren« Aufbau eines Elements nennt man auch sein Inhaltsmodell.
Bei der Anwendung eines Elements in einem Dokument muss ein so genanntes Start- und ein End-Tag angegeben werden, das den Anfang bzw. das Ende des Elements markiert. Tags bestehen aus dem in spitzen Klammern eingefassten Elementnamen, bei den End-Tags wird dem Elementnamen ein / vorangestellt:<NOTIZEN> <NOTIZ> Morgen Treffen um 15.30h </NOTIZ> </NOTIZEN>
Von der Terminologie her sind Tags sorgfältig von Elementen zu unterscheiden:In der Umgangssprache (und oft in der Literatur) werden auch Elemente als Tags bezeichnet, zum Beispiel »das BR-Tag von HTML erzeugt einen Zeilenumbruch«. Tatsächlich ist hier aber das Element BR gemeint und nicht ein einzelnes Tag in einem bestimmten Dokument. Man sollte sich also (zumindest im Hinterkopf) über den Unterschied zwischen Tag und Element im Klaren sein.
- Ein Element ist ein Strukturbestandteil, der in der DTD definiert wird.
- Tags dienen als Begrenzer für die Verwendung eines Elements im Exemplar.
Neben dem Element-Inhalt gibt es auch Elemente mit so genanntem gemischten Inhalt. Hier können Textdaten mit Unterelementen vermischt enthalten sein. Zeichendaten werden mit dem reservierten Wort #PCDATA bezeichnet. Dieser Name leitet sich von »parsed character data« ab.
Ein Element PARA für einen Textabsatz, der abwechselnd Zeichen und Bilder enthalten kann, würde so definiert werden:<!ELEMENT PARA (#PCDATA¦IMG)*>Das Pipe-Zeichen (¦) ist ein so genannter Konnektor, der dazu dient, eine »1 aus n«-Auswahl zu definieren. Es muss genau ein Element aus der Auswahlliste benutzt werden.
Neben dem Pipe-Zeichen gibt es noch einen zweiten Konnektor, das Komma. Es wurde bereits in den beiden vorangehenden Beispielen zum BOOK-Element benutzt und definiert eine Sequenz. Jeder Bestandteil der Sequenz (ein Element oder auch eine Gruppe) muss entsprechend der Quantoren angegeben werden, und zwar in genau derselben Reihenfolge.
Elemente können auch als leer vereinbart werden. Dies ist in Fällen sinnvoll, in denen die Attribute des Elements bereits alle wesentlichen Informationen enthalten. Ein Beispiel für ein leeres Element wäre eines, das ein Bild einbindet, dessen Name als Attribut gegeben ist:<!ELEMENT IMG EMPTY> <!ATTLIST IMG FILE CDATA #REQUIRED>Dieses Element würde folgendermaßen angewendet werden:<IMG FILE="icon.gif"/>Dieses Beispiel zeigt eine Besonderheit von leeren Elementen: Sie bestehen nur aus einem Tag, das mit der Sequenz /> endet.