Elemente
Um Elemente zu deklarieren, wird der Ausdruck <!ELEMENT Name Inhalt>
verwendet. Name
muss dabei
durch den Elementnamen ersetzt werden. Als Wert für den Platzhalter Inhalt
gibt es mehrere Möglichkeiten:
EMPTY
(Element enthält keinen Inhalt und ist einteilig), ANY
(Element darf beliebigen Inhalt enthalten)
oder die explizite Angabe des Elementinhalts.
<!ELEMENT umbruch EMPTY>
Wird der Inhalt explizit angegeben, so muss dieser in runden Klammern notiert werden. Die Klammern dienen zur
Gruppierung und können auch für weitere Gruppen innerhalb der „Hauptgruppe“ verwendet werden. Innerhalb der Gruppen
kann nun entweder das Schlüsselwort #PCDATA
, um auf einen textuellen Inhalt hinzuweisen, oder der Name eines
Elements angegeben werden. Mehrere Inhalte werden durch Komma getrennt.
<!ELEMENT adresse (strasse,hausnummer,plz,ort)>
Um die Anzahl der Vorkommen von Elementen zu steuern, gibt es in DTD drei wichtige Zeichen: *
, +
und ?
. Mit dem Sternzeichen *
können Sie festlegen, dass das Element beliebig oft vorkommen darf
(also keinmal, einmal oder mehrmals). Das Pluszeichen +
legt fest, dass das Element mindestens einmal bis beliebig
oft vorkommen darf. Mit dem Fragezeichen ?
kennzeichnen Sie ein Element als optional, d. h. es kann einmal vorkommen
oder auch nicht. Mehrere Vorkommen sind nicht erlaubt. Wird keines der drei Zeichen angegeben, so muss das Element exakt einmal
vorkommen.
<!ELEMENT computer (maus,tastatur,monitor+)>
Um anzugeben, dass entweder das eine oder das andere Element vorkommen soll, wird der Senkrechtstrich |
verwendet.
Auch drei oder mehrere sogenannte Alternativen können angegeben werden.
<!ELEMENT telefon (festnetz|handy)>
Die oben genannten Verfahren können auch nach Belieben gemischt werden.
<!ELEMENT computer ((funkmaus|kabelmaus),tastatur,(touchmonitor|monitor)+)>
Oft möchten Sie, dass die Reihenfolge von Elementen nicht starr ist, sondern dass diese variieren kann. Hierfür notiert man alle Elemente als Alternativen, gruppiert diese und versieht die Gruppe mit dem Sternzeichen. Man spricht hier auch von gemischtem Inhalt.
<!ELEMENT kontakt (name|strasse|hausnummer|plz|ort|telefon|email)*>
Hier nun noch ein vollständiges Beispiel:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE kontakt [ <!ELEMENT kontakt (name,adresse,telefon*,email?)> <!ELEMENT name (vorname,nachname)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT adresse (strasse,hausnummer,plz,ort)> <!ELEMENT strasse (#PCDATA)> <!ELEMENT hausnummer (#PCDATA)> <!ELEMENT plz (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT telefon (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> <kontakt> <name> <vorname>Max</vorname> <nachname>Mustermann</nachname> </name> <adresse> <strasse>Musterstraße</strasse> <hausnummer>123</hausnummer> <plz>12345</plz> <ort>Musterstadt</ort> </adresse> <telefon>01234 / 56789</telefon> <telefon>0987 / 654321</telefon> <email>m.mustermann@example.com</email> </kontakt>