XML-Know How

Attribute für Verweise

Verweise in Texten bestehen aus der Angabe der Stelle oder Passage, auf die verwiesen wird. Diese Angabe kann als freisprachlicher Wortlaut vorliegen:»Mehr dazu lesen Sie im übernächsten Kapitel«. Solche freisprachlichen Angaben nennen wir im Folgenden den Verweistext. Oft wird auch bei Printwerken ein Seitenverweis verwendet: »Mehr dazu lesen Sie im übernächsten Kapitel (S. 123).«, mitunter steht nur der Seitenverweis: »Die Kombustion (s. S. 234) ist hier besonders wichtig.«

In elektronischen Medien wie dem Internet gibt es in der Regel keine Seiten, deren Nummer man als Verweisziel angeben könnte. Es bedarf daher anderer Konstruktionen. Meist ist der Verweistext typographisch hervorgehoben, z. B. farbig und unterstrichen als anklickbarer Hyperlink gekennzeichnet: »Mehr dazu lesen Sie im übernächsten Kapitel«. Klickt man den markierten Text an, wird der Abschnitt angezeigt, auf den verwiesen wurde.

Um dies maschinenlesbar abzubilden, ist es in XML nötig, ein Inline-Element wie z. B. <verweis> zur Kennzeichnung des Verweistextes zu verwenden:

<absatz>Die <verweis>Kombustion</verweis> ist hier besonders wichtig.</absatz>

Die Information, auf welchen Abschnitt hier verwiesen wird, fehlt in diesem Beispiel allerdings noch. Der Begriff »Kombustion« kann ja in dem fraglichen Werk vielfach vorkommen, der Sprung soll aber eine gezielte Stelle aufsuchen, nämlich die Stelle, wo er besonders erläutert wird. Es liegt nahe, diese Information dem Element <verweis> als Attribut hinzuzufügen. Wie aber geschieht dies genau?

Zunächst ist eine eindeutige Identifikation des Sprungzieles notwendig. Dafür sind theoretisch verschiedene Lösungen möglich. Man kann auf einen Abschnitt unter Angabe seines Inhalts, seiner Überschrift oder seiner Position verweisen. Allerdings wären das recht umständliche Verweismethoden. Zudem könnte der Verweis schnell fehlerhaft werden: Der Text eines Abschnitts kann durch Überarbeitung verändert werden, auch seine Überschrift kann umformuliert werden, ebenso seine Position in einem Kapitel geändert.

Daher sieht XML die Möglichkeit vor, einem Element eine eindeutige Identifikation, eine ID zuzuordnen. Die ID ist eine Art Identifikationsnummer, die einmal zugewiesen wird und dann immer bei dem Abschnitt verbleibt, auch wenn dieser inhaltlich verändert oder im Dokument verschoben wird. Diese Identifikationsnummer wird in XML einem Element als Wert eines Attributes vom Typ ID zugeordnet.

Die Festlegung, dass ein Attribut als ID-Attribut gelten soll, geschieht in der Dokumenttyp-Definition. Dabei muss das Attribut nicht »ID« genannt werden, das ist allerdings der Einfachheit halber sehr oft der Fall. Das Attribut, auch hier im Beispiel id genannt, wird dann wie andere Attribute verwendet:

<abschnitt id="x1234" sprache="de" bearbeiter="Chr. Schmitt">

Zusätzlich zu den normalen Attributregeln gilt für ID-Attribute:

  • Werte von ID-Attributen müssen mit einem Buchstaben oder »_« beginnen und dürfen Buchstaben, Ziffern, »-«, ».«, und »_« enthalten
  • ein Element darf nur ein einziges ID-Attribut haben
  • ein konkreter Attributwert darf nur einmal im Dokument vorkommen

Mit einem ID-Attribut ist das Element immer eindeutig auffindbar, gleich welche Änderungen an ihm vorgenommen werden. XML-Parser prüfen automatisch, ob die ID in dem Dokument wirklich nur einmal vorkommt und ob die Regeln für den Attributwert eingehalten wurden.

Um nun einen Verweis zu erzeugen, muss man lediglich dem Verweiselement per Attribut die Information mitgeben, welche ID das Element hat, auf das der Verweis zielt. Da ein solches Attribut eine Referenz auf eine ID darstellt, heißt es ID-Referenz-Attribut, fachsprachlich IDREF-Attribut. Den Attributwert nennt man entsprechend IDREF.

<absatz>Die <verweis ziel="x1234">Kombustion</verweis> ist hier besonders wichtig.</absatz>

Die Information, dass ein bestimmtes Attribut (hier das Attribut ziel) als IDREF-Attribut zu behandeln ist, steht wieder in der Dokumenttyp-Definition.

Zusätzlich zu den normalen Attributregeln gilt für IDREF-Attribute:

     

  • Werte von IDREF-Attributen müssen auch
    als Werte eines ID-Attributs vorkommen.

Das heißt: wenn es in dem Dokument, in dem unser Beispielverweis steht, kein Element mit einem ID-Attribut mit dem Wert "x1234" gibt, führt das zu einer Fehlermeldung. Das ist auch sehr hilfreich, denn da das IDREF-Attribut als Verweis dient, werden so Verweise vermieden, die ins Leere gehen.

Manche XML-Editoren bieten für IDREF-Attribute schon eine eingebaute Linkfunktionalität, wie man sie von Webbrowsern kennt: ein Doppelklick auf ein Element mit IDREF-Attribut führt zu einem Sprung auf das Zielelement mit dem entsprechenden ID-Attribut. Genauso wird in der Regel die Umsetzung der XML-Verweise in elektronischen Publikationen aussehen.

Für Printpublikationen müssen die XML-Verweise in Seitenverweise aufgelöst werden. Der Programmbefehl an ein XML-Satzprogramm würde dann, freisprachlich formuliert, in etwa so lauten: »Findest du ein Element <verweis>, so merke dir den Wert seines ziel-Attributes (im Beispiel "x1234"). Suche sodann das Element mit einem ID-Attribut, das eben diesen Wert aufweist ("x1234"). Hast du dieses Element gefunden, merke dir die Seitenzahl, auf der es steht, gehe zurück zum <verweis>-Element und füge hinter das Element die gemerkte Seitenzahl in Klammern ein, vor der Seitenzahl füge ein siehe Seite

Steht also das Element <abschnitt> mit der ID "x1234" nach dem Seitenumbruch im Satzprogramm auf Seite 100, wird aus dem XML-Verweis

<absatz>Die <verweis ziel="x1234">Kombustion</verweis> ist hier besonders wichtig.<absatz>

bei der Satzausgabe der Text:

Die Kombustion (siehe Seite 100) ist hier besonders wichtig.

Manchmal ist es notwendig, von einer Stelle auf mehrere andere zu verweisen. Solche Mehrfach-Verweise nennt man in der XML-Terminologie »multiple Links«. Um mehrere Verweisziele bei einem Verweis anzugeben, verwendet man den Attributtyp IDREFS. Bei diesem Attributtyp besteht der Attributwert aus mehreren IDREFS, jeweils durch ein Leerzeichen getrennt.

Der Mehrfach-Verweis »Kombustion siehe S. 12, 234 und 345« im Print kann in XML wie folgt kodiert werden, wobei anstelle der Seitenzahlen die IDs der Abschnitte stehen, auf die verwiesen wird:

<verweis ziel="x123 x456 x756">Kombustion</verweis>

Stehen die Textabschnitte mit den IDs x123, x456, x756 bei der Printausgabe der XML-Daten auf den Seiten 12, 234 und 345 wird das Satzsystem den Verweis also wie folgt auflösen:

Kombustion S. 12, 234 und 345

Die Umsetzung in EP-Produkten könnte beispielsweise über ein Popup-Window erfolgen, das sich beim Anklicken des Verweises öffnet und Links auf die verschiedenen Ziele enthält.

Es sei an dieser Stelle kurz erwähnt, dass die Verwendung von ID- und IDREF-Attributen zwar der häufigste und einfachste Verweismechanismus ist, aber nicht immer ausreicht. Bei Verweisen auf Textstellen in anderen Dokumenten ist etwa neben der Angabe der IDREF auch die Benennung des Zieldokumentes nötig:

<verweis dokument="y100" ziel="x1234">Kombustion</verweis>

Auch Verweismechanismen ohne IDs und IDREFs sind mitunter anzutreffen. Möglich ist z. B. auch die Angabe der Position des Elements im Dokument (in etwa: dritter Abschnitt im zweiten Kapitel). Solche Verweismechanismen erfordern aber meist selbst erstellte Programme, die die Verweise auflösen, während Verweise auf Basis von ID- und IDREF-Attributen originärer Teil des XML-Standards sind und von vielen Programmen standardmäßig unterstützt werden.

Prinzipiell sind alle Verweismethoden gleichwertig, solange sie nur eindeutig sind. Welche Art der Verweistechnik letztendlich in einem Projekt verwendet wird, hängt von der Art der Daten und der geplanten Verwendungen ab und muss daher für den Einzelfall geklärt werden.