Es existieren mehrere Attribut-Typen, die zusammengefasst als
«tokenized types» bezeichnet werden. Diese Typen besitzen die reservierten Namen:
ID
IDREF (IDREFS)
ENTITY (ENTITIES)
NMTOKEN (NMTOKENS)
NOTATION (NOTATIONS)
Bis auf das erste Schlüsselwort
«ID» existiert also von allen weiteren Typen auch der Plural. Dieser findet immer dann Verwendung, wenn einem Attribut gleichzeitig mehrere Werte eines Typs übergeben werden sollen.
ID
Für jedes Element eines Dokumentes kann ein ID-Attribut angegeben werden, um eine eindeutige Bezeichnung dieses Elements zu erzeugen. Jede ID darf nur einmal existieren, sollten in einem XML-Dokument zwei Elemente mit gleicher ID auftreten, so tritt ein Fehler auf.
<!ATTLIST adresse Nummer ID #REQUIRED>
Im Element
«adresse» wird ein Attribut
«Nummer» mit dem Typ
«ID» angelegt. Zu dem Zusatz
«#REQURIED» später mehr!
IDREF
Mit der ID Referenz (IDREF) verweist man auf die ID eines anderen Elementes. Auf diese Weise lassen sich Verknüpfungen von Daten innerhalb eines Dokuments realisieren. Sollte zur angegebenen Referenz kein Element existieren, dann zeigt der Parser einen Fehler an.
<!ATTLIST adresse Nummer ID #REQUIRED>
<!ATTLIST adresse Referenz IDREF #REQUIRED>
<?xml version="1.0"?>
<adressliste>
<adresse Nummer="1">
</adresse>
<adresse Nummer="2" Referenz="1">
</adresse>
</adressliste>
Über die Pluralform
«IDREFS» kann gleichzeitig ein ganze Liste von Verknüpfungen (getrennt durch ein Leerzeichen) übergeben werden
...Referenz="1 2 3">
ENTITY
Möchte man eine Datenquelle als externes Entity einbinden, so muss das Entity immer als Wert eines Attributes übergeben werden (nähere Erläuterung zu Entities folgt später). Auch hier hat man die Möglichkeit mehrere Entities getrennt durch Leerzeichen zu übergeben.
<!ATTLIST bild Quelle ENTITY>
Dem Element «bild» wird hier das Attribut
«Quelle» zugewiesen, welches wiederum ein Entity als Wert übergeben bekommt!
Im Quelltext taucht dann folgendes auf (wobei test der Name des Entitys ist):
<bild Quelle="test"/>
NMTOKEN
Ein Attribut des Typs NMTOKEN kann auch eine Vielzahl verschiedener Zeichen aufnehmen, mit der einzigen Ausnahme, dass für die Zeichen die allgemeinen Namenskonventionen gelten. Das heißt, dass der Wert des Attributs nur eine Zeichenkette enthalten kann, die gleichzeitig einen gültigen Elementnamen darstellt!
<!ATTLIST adresse Kuerzel NMTOKEN>
NOTATION
Notationen werden immer dann eingesetzt, wenn der Datentyp eines externen Entitys zu definieren ist. Beispielsweise sind
«GIF» oder
«JPG» gültige Bezeichnungen für eine Notation.
<!ATTLIST bild Typ NOTATION>
In der Notation definieren wir einen Typ
«gif» und einen Pfad zur Anwendung, mit dem das Bild angezeigt werden kann.
<!NOTATION gif SYSTEM "http;//www.domain.de/pictureviewer.exe">
»