Nachdem die Elemente erklärt sind, folgen nun die Attribute. Eine Attributlisten-Deklaration legt fest, welche Attribute für einen Elementtyp existieren, von welchem Typ die Attributwerte sind, und ggf. enthält sie einen Vorgabe-Wert (default). Die folgenden Beispiele zeigen Attribute, die in HTML vorkommen.
<!ATTLIST img src CDATA #REQUIRED alt CDATA #REQUIRED height CDATA #IMPLIED width CDATA #IMPLIED > <!ATTLIST h1 id ID #IMPLIED align (left|center|right|justify) left >
Die beiden notwendigen
(REQUIRED) Attribute src und
alt erwarten beide eine
Zeichenkette als Wert (CDATA). Gleiche
Wertetypen sind für die Höhen- und Breitenangabe
erlaubtDatentypen wie in (stark typisierten)
Programmiersprachen fehlen leider in
XML. Andernfalls würde sich der Typ
ganze
Zahl
für die Ausmaße eines Bildes anbieten.,
jedoch müssen diese Werte nicht explizit angegeben werden. Das
Anwendungsprogramm (bei HTML in der Regel der
Web-Browser) muss ggf. die impliziten Werte
(IMPLIED) verwenden. Bei Grafiken heißt das, der Browser muss
die Ausmaße selbst ermitteln.
Für den HTML-Elementtyp h1 sind im Beispiel zwei weitere Attributtypen zu sehen: id dient dazu, eine eindeutige Identifikation an einem Element anzubringen. Auf so ein Element kann mit einem Attribut vom Typ idref verwiesen werden (im Beispiel nicht zu sehen, weil HTML Querverweise leider nicht in dieser Form zulässt). Das zweite Attribut von h1, align, ist vom Typ Aufzählungstyp. Der Wertebereich dieses Typs ist vollständig in den Klammern enthalten. Andere Werte als die dort gezeigten sind nicht zugelassen. Die Vorgabe ist in diesem Fall der Wert left.
Die wesentlichen Attributtypen sind damit genannt. Es gibt weitere, die etwas komplizierter sind und seltener zum Einsatz kommen. Deshalb verzichten wir an dieser Stelle auf eine umfassende Darstellung und verweisen auf das nächste Kapitel. Wir beenden hier die Ausführungen über Attribute mit den Syntaxdiagrammen und einigen abschließenden Bemerkungen.
Wie man sowohl in den obigen Beispielen als auch in
dem Diagramm erkennt, sind Definitionen von
mehreren Attributen möglich (daher auch der Name
Attributliste
). Eine Attributdefinition ist einfach
eine Sequenz der folgenden Art:
Erwähnenswert ist noch, dass Attribute mehrfach definiert werden dürfen. Ein XML-Prozessor kombiniert dann die Definitionen nach Regeln, die im Anhang beschrieben sind. Vorsicht ist an dieser Stelle geboten, wenn Ihre DTDs und/oder Instanzen auch von SGML-Systemen eingelesen werden sollen, die die WebSGML-Ergänzung nicht implementiert haben. In (Kern-)SGML ist die mehrfache Definition von Attributen nicht zulässig. Sie sollten darauf also so weit möglich verzichten, um die Austauschbarkeit von Daten mit solchen Systemen zu gewährleisten.