XML-Know How

Attribute für Meta-Daten

Über sogenannte Attribute lassen sich die einzelnen Elemente noch weiter spezifizieren. Attribute beinhalten Zusatzangaben für einzelne Elemente. Sie machen ergänzende Angaben zum Inhalt oder zur Art der Elemente oder enthalten Verwaltungs- und Verarbeitungsinformationen, die weder aus dem Elementinhalt noch dem Elementnamen oder der Elementposition abgeleitet werden können.

Im folgenden Beispiel werden mittels Attributen für einen Abschnitt Angaben zum Autor, zur Sprache und zum Redakteur gemacht:

<abschnitt sprache="deutsch" autor="Chr. Schmitt" redakteur="Meier">
(...)
</abschnitt>

Dabei ist abschnitt der Elementname, sprache, autor und redakteur sind die Attributnamen und deutsch, Chr. Schmitt sowie Meier die jeweils zugehörigen Attributwerte. Die Informationen in den Attributen dieses Beispiels könnten z. B. bei einem Gemeinschaftswerk mehrerer Autoren wichtig sein: Auch wenn der Leser diese Informationen nie zu sehen bekommt, können sie etwa dafür verwendet werden, jedem Redakteur nur die von ihm zu verantwortenden Abschnitte auszudrucken oder die Honorarabrechnung zu automatisieren.

Die allgemeinen formalen Regeln für die Verwendung von Attributen in XML sind:

     

  • Attribute stehen immer im Start-Tag eines Elementes und sind
    vom Namen des Elements und voneinander durch Leerzeichen getrennt
  • sie haben die Form attributname="attributwert"
  • der Attributwert muss in einfachen oder
    doppelten Anführungsstrichen stehen
  • Attributnamen
    ... müssen mit Buchstaben oder »_« beginnen
    ... dürfen Buchstaben, Zahlen, »-«, ».«, und »_« enthalten
    ... dürfen nicht mit »xml« beginnen
    ... sind case-sensitive (Groß-Kleinschreibung wird ausgewertet:
    ATTRIBUTNAME und attributname werden unterschieden).
  • ein Element darf beliebig viele Attribute
    mit verschiedenen Namen haben
  • ein Attribut eines Namens darf nur je einmal
    bei einem konkreten Element vorkommen
  •  

Die Funktionen von Attributen können sehr verschieden sein. Deshalb gibt es, ähnlich wie bei Elementen, auch unterschiedliche Attribut-Typen. Welchen Typ ein Attribut hat, kann man aus Namen und Form im XML-Dokument nicht ersehen. Die Typangabe erfolgt für jedes Attribut eines Elementes in der Dokumenttyp-Definition. Die Attribute betreffende Syntax der DTD wird weiter unten in diesem Artikel besprochen.

Das einfachste Attribut ist das CDATA-Attribut. Wie bei den Elementtypen heißt »CDATA« schlicht »character data«, also Zeichendaten. CDATA-Attribute können beliebigen Text beinhalten. Lediglich die Zeichen, die den Attributwert begrenzen (doppelte oder einfache Einführungszeichen) dürfen nicht im Attributwert vorkommen. Andernfalls wäre ja das Ende des Wertes nicht mehr eindeutig feststellbar. Eine mögliche Anwendung wäre die abschnittsweise Angabe des Autors bei Gemeinschaftswerken:

<abschnitt autor="Chr. Schmitt">

Eine ähnliche Variante ist das Auswahl-Attribut, in der XML-Terminologie enumeration attribute genannt. Dabei kann in der Dokumenttyp-Definition für das Attribut eine Liste von möglichen Werten angegeben werden. Jeder dieser Werte kann aus Buchstaben, Ziffern sowie den Zeichen »-«, ».«, »:« und »_« bestehen.

Eine naheliegende Anwendung hierfür ist die abschnittsweise Angabe der Sprache des Textes. Damit könnte beispielsweise die Verwendung der richtigen Einstellungen bei programmgestützter Rechtschreibkontrolle oder Silbentrennung sichergestellt werden. Da das Rechtschreibkontroll-Programm dazu den Attributwert des »Sprachattributes« auslesen muss, wäre es fatal, wenn der Bearbeiter einen falschen Wert eintragen würde oder sich auch nur vertippen. Dann kann das Programm den Wert nicht interpretieren, es kommt zu einem Fehler. Legt man per Auswahl-Attribut fest, dass nur bestimmte Werte (z. B. »en«, »fr« und »de«) erlaubt sind, können derartige Fehler ausgeschlossen werden. Es lässt sich auch eine Voreinstellung für einen Standard-Attributwert angeben, im Beispiel etwa »de«. In diesem Fall müsste der Attributwert nur dann manuell eingegeben werden, wenn eine andere Sprache vorliegt.

<abschnitt sprache="de" autor="Chr. Schmitt">

Wenn das Attribut freien Text beinhalten soll, aber dieser Text aus nur einem Wort, also einer Zeichenfolge ohne Leerzeichen bestehen soll, verwendet man ein Attribut vom Typ name token (NMTOKEN). Dabei steht token für »Kürzel« im Sinne von Aktenzeichen, name heißt in SGML/XML eine Zeichenfolge aus Buchstaben, Ziffern, »-«, ».«, und »_«, die mit einem Buchstaben beginnen muss. Bei einem NMTOKEN-Attribut dürfen daher nur diese Zeichen im Attributwert vorkommen (und er darf, anders als der bloße name, auch mit allen diesen Zeichen beginnen).

Eine Variante ist das NMTOKENS-Attribut, bei dem mehrere solcher Zeichenfolgen auftreten dürfen, jeweils mit einem Leerzeichen getrennt. So könnten Sie für einen Abschnitt angeben, welche Aktenzeichen für den beschriebenen Vorgang relevant sind.

<abschnitt sprache="de" autor="Chr. Schmitt" aktenzeichen="AB-6-45 RS-56-87-9-III XY-45-65/II">

Bei einer programmgestützten Auswertung des aktenzeichen-Attributes wird der Wert nicht als Zeichenfolge "AB-6-45 RS-56-87-9-III XY-45-65/II" interpretiert, sondern als die Auflistung mehrerer Werte:

AB-6-45
RS-56-87-9-III
XY-45-65/II

Wie die anderen Attributtypen können auch Auswahl-Attribute den unterschiedlichsten Zwecken dienen. Wie man sie bei der konkreten Anwendung benennt, welche konkreten Daten man in ihnen speichert und wie man diese Daten auswertet, liegt alleine beim Nutzer. XML definiert auch hier lediglich den technischen Rahmen in sehr allgemeiner Weise.