# XLink (Syntax)

XLink ist eine attributbasierte Syntax zur Definition von Links in XML-Dokumenten. Ein XLink kann eine Verbindung von einem Punkt A zu einem Punkt B sein (ähnlich dem aus HTML bekannten Hyperlink-Element <a>). Sie können jedoch auch Dokumente in zwei Richtungen verbinden (das heißt von A nach B und ebenso zurück). Des Weiteren können XLink auch Verbindungen repräsentieren, die multidirektional sind (unterschiedliche Wege zwischen beliebig vielen XML-Dokumenten). Die Dokumente, auf welche ein XLink zeigt, müssen keine XML-Dokumente sein.
XLink ist eine Empfehlung des World Wide Web Consortiums. Trotz zögerlicher Implementierung betrachtet das W3C XLink weiterhin als den zukünftigen Standard für Hyperlinks im WWW und gibt ihm ausdrücklich den Vorzug gegenüber anderen Verfahren wie insbesondere HLink.
XLinks werden in XML-Elemente mit beliebigen Elementnamen eingebaut, indem den Elementen bestimmte XML-Attribute des XML-Namensraums http://www.w3.org/1999/xlink hinzugefügt werden (für gewöhnlich an das Präfix xlink gebunden).

## Einfache XLinks

Einfache XLinks können in einem beliebigen Element stehen und werden durch folgende Attribute beschrieben:
* Sie werden durch die Attributzuweisung xlink:type="simple" erklärt.
* Den eigentlichen Verweis enthält das Attribut xlink:href="Verweis", wobei Verweis durch einen Uniform Resource Identifier zu ersetzen ist, der definitionsgemäß auch einen XPointer-Ausdruck für dokumentinterne Verweise enthalten darf.
Optional sind die Attribute:
* xlink:title, das einen benutzerfreundlichen Titel des Verweises enthält. Alle Typen von XLink-attributierten Elementen dürfen ein xlink:title-Attribut tragen, auch die unten genannten erweiterten Typen.
* xlink:show, das festlegt, wie der Verweis angezeigt werden soll, und das die Werte new, replace, embed, other, none annehmen kann.
* xlink:actuate, das festlegt, wann der Verweis verfolgt werden soll, und das die Werte onLoad, onRequest, other, none annehmen kann.
* xlink:role, das die Bedeutung der Links zueinander beschreibt. Es enthält einen URI, das die entfernte Ressource kommentiert oder erklärt.
* xlink:arcrole, ist von der Semantik identisch mit xlink:role, beschreibt jedoch Bogenelemente, die kein xlink:role-Attribut aufnehmen können. Es enthält einen absoluten URI, der auf eine Beschreibung der Ressource verweist. Diese Ressource kennzeichnet die Beziehung, die der Bogen beschreibt.

## Erweiterte XLinks

Erweiterte XLinks bieten Möglichkeiten für bi- und multidirektionale Verweise sowie Verweise auf Verweise. Anders als bei den einfachen XLinks sind hierfür mehrere Elemente nötig:
* ein Element mit dem Attribut xlink:type="extended" bildet quasi den Rahmen des erweiterten XLinks. Es darf außer einem xlink:title das o. g. Attribut xlink:role tragen.
Die Funktionalität des so deklarierten komplexen XLinks wird in Unterelementen festgelegt, die wieder beliebig benannt werden können und die mit folgenden Attributen zu XLink-Bestandteilen werden:
* mit xlink:type="locator" attribuierte Elemente müssen als weiteres Attribut xlink:href="URI" enthalten, wobei URI durch einen Uniform Resource Identifier zu ersetzen ist. Sinnvollerweise gibt man auch ein Attribut xlink:label an und damit einen Namen der den erklärten URI repräsentiert.
* xlink:type="resource" fügt Ressourcen ein, die innerhalb des Dokumentes referenziert werden können. Damit diese Ressourcen überhaupt von anderen Links angesprochen werden können, ist die Angabe eines xlink:label-Attributes nötig.
Man hat bis hierhin noch keine eigentlichen Verweise, sondern dokumentinterne und -externe URIs, die jeweils durch ein Label repräsentiert werden. Diese setzt man nun mit (einem) weiteren Unterelement(en) des Elements mit xlink:type="extended" zueinander in Beziehung:
* Ein mit xlink:type="arc" attribuiertes Element enthält sinnvollerweise folgende Attribute: xlink:from="..." und xlink:to="...", wobei die zuvor definierten Label verwendet werden. Optional sind die bereits erläuterten Attribute xlink:title, xlink:show, xlink:actuate, xlink:arcrole

## Softwareunterstützung

Es folgt eine Übersicht der Unterstützung für die W3C XLink-Empfehlung durch verschiedene Anwendungen.

### Firefox

Mozilla Firefox hat begrenzte Unterstützung für simple XLinks. (Stand 20. September 2009)
* Links mit einem xlink:show="embed" Attribut funktionieren nicht.

### Weitere Browser

Weitere Browser wie Internet Explorer, Opera und Google Chrome werden derzeit noch nicht unterstützt. (Stand 20. September 2009)