Was die meisten Anwender, denen A nicht reicht, faszinieren dürfte, sind die Erweiterungen, die XLink — und Xpointer (siehe weiter unten) — im Vergleich dazu bieten. Im Gegensatz zu den einfachen Links können die erweiterten mehr als nur eine Ressource enthalten.
Zunächst eine Definition (aus dem XLink-Entwurf): Ein erweiterter Link ist ein Link, der eine beliebige Anzahl von Ressourcen verbindet. Die beteiligten Ressourcen können irgendeine Kombination von lokalen und entfernten Ressourcen sein. Sind alle entfernte, handelt es sich um einen Out-of-line-Link. Ist auch nur eine Ressource lokal, handelt es sich um einen Inline-Link.
Zu den Besonderheiten der erweiterten Links gehört,
associative trails), Engelbart und Nelson schon vor vielen Jahren fasziniert hat. (beispielsweise von einer auf CD-ROM gespeicherten Datei oder einer anderen Website aus ...) und
Erweiterte Links sind daran zu erkennen, dass für ein Element das Attribut xlink:type den Wert extended besitzt. Dieses Element wiederum enthält unter anderem Kindelemente, deren Attribut type die folgenden Werte hat:
type-Wert | Aufgabe |
---|---|
locator | spricht die beteiligten entfernten Ressourcen an |
arc | definiert die Verzweigungsregeln zwischen den beteiligten Ressourcen |
title | sorgt für menschenlesbare Beschriftungen |
resource | beschreibt die lokalen Ressourcen |
In einer DTD lässt sich der Attributwert festlegen, sodass für ein solches Element Attribut und Wert nicht angegeben werden müssen. Das folgende Beispiel zeigt einen erweiterten Link mit einem als locator gekennzeichneten Kindelement.
<!-- in der DTD --> <!ELEMENT erweitert erwverweis+> <!ATTLIST erweitert xlink:type CDATA #FIXED "extended" xlink:role NMTOKEN #FIXED "erweitert" xlink:title CDATA #IMPLIED > <!ELEMENT erwverweis ANY> <!ATTLIST erwverweis xlink:type CDATA #FIXED "locator" xlink:href CDATA #REQUIRED xlink:role CDATA #IMPLIED >
Das erste der beiden Elemente (erweitert) ist der erweiterte Link — durch den Wert des Attributs xlink:type. Das erweitert allerdings noch nicht die Funktion von Adressangaben; dazu dient das zweite Element erwverweis. Es enthält eins der genannten Schlüsselwörter für den xlink:type-Attributwert, denn der ist als locator definiert. Innerhalb einer XML-Instanz könnte das Element erweitert mehrere dieser Adressangaben beinhalten.
<!-- im Dokument --> <erweitert xlink:type="extended"> <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar1.xml" xlink:role="einstieg" /> <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar2.xml" xlink:role="uebung" /> <erwverweis xlink:href="http://www.nimmermehr.de/foo/bar3.xml" xlink:role="vertiefung" /> <erwverweis href="http://www.nimmermehr.de/foo/bar4.xml" xlink:role="schluss" /> </erweitert>
Zunächst ist erweitert als erweiterter Link definiert. Innerhalb dieses Elements sind nun die eigentlichen Adressangaben aufgelistet. Wiederum müssen die Anwendungen (wie Browser etc.) Möglichkeiten bereitstellen, solche Links dem Anwender zu präsentieren. Denkbar wäre, ein PopUp-Menü zu erzeugen, das über die alternativ zu findenden Ressourcen aufklärt und eine Auswahl bietet, wenn jemand die Maus über ein sensitives Gebiet auf der Web-Seite führt. In solchem Umfeld kämen Attribute wie xlink:title zum Tragen, denn sein Wert kann zur Beschreibung der Adressangaben, etwa im genannten Auswahlmenü, herangezogen werden.
Sind die Ressourcen lokal, muss der Wert ihrer xlink:type-Attribute resource sein. Außer dem Typ können lokale Resourcen die Attribute xlink:role und xlink:title beinhalten.
Abbildung 26: Ein erweiterter Verweis, der einen Inline-Link darstellt, weil er über eine lokale Ressource verfügt
<!-- in der DTD --> <!ELEMENT wetterbericht (go | stadt | temperatur)*> <!ATTLIST wetterbericht xlink:type (extended) #FIXED "extended" xlink:role NMTOKEN #FIXED "ext-verweis" xlink:title CDATA #IMPLIED > <ELEMENT temperatur ANY> <!ATTLIST temperatur xlink:type (resource) #FIXED "resource" xlink:role NMTOKEN #FIXED "temp" xlink:title CDATA #IMPLIED > <ELEMENT stadt ANY> <!ATTLIST stadt xlink:type (resource) #FIXED "resource" xlink:role NMTOKEN #FIXED "stadt-info" xlink:title CDATA #IMPLIED > <!-- im Dokument --> <wetterbericht xlink:title="Wetter im Norden"> <go xlink:from="temp" xlink:to="stadt-info" /> ... <stadt>...</stadt> ... <temperatur>12,5</temperatur> </wetterbericht>
Erweiterte Links können Angaben darüber enthalten, von wo nach wo verzweigt werden soll. Für diese Angaben sind Elemente vorgesehen, die als Wert von xlink:type-Attributen arc besitzen. Auch hierzu ein Beispiel.
<!-- in der DTD --> <!ELEMENT go ANY> <!ATTLIST go xlink:type (arc) #FIXED "arc" xlink:from NMTOKEN #IMPLIED xlink:to NMTOKEN #IMPLIED xlink:role NMTOKEN #IMPLIED xlink:title CDATA #IMPLIED xlink:show (new|replace|embed|undefined) #IMPLIED xlink:actuate (onLoad|onRequest|undefined) #IMPLIED > <!-- im Dokument --> <go xlink:from="woher" xlink:to="wohin" xlink:show="new" actuate="onRequest"/>
Folgendes Beispiel zeigt die Verwendungsmöglichkeiten der Bögen. Angenommen sei dazu, dass die Elemente alle dem XLink-Namensraum entstammen und der xlink:type jeweils dem Namen des Elements entspricht. Es sei also das Element extended mit xlink:type="extendend" definiert.
<!-- im Dokument --> <extended> <locator href="dokument1.xml" role="inhalt" title="Titel 1" /> <locator href="dokument2.html" role="inhalt" title="Titel 2" /> <locator href="ihv.xml" role="navigation" title="Inhaltsverzeichnis für diese Website" /> <locator href="/CGI/suche.pl" role="navigation" title="Auf dieser Website suchen" /> <locator href="impressum.html" role="about-site" title="Impressum" /> <arc from="inhalt" to="navigation" /> <arc from="about-site" to="navigation" /> </extended>
Hinter diesem Beispiel steht eine Website mit zwei Dokumenten, die den Inhalt enthalten. Sie sind in den Dateien dokument1.xml und dokument2.html gespeichert. Des weiteren gibt es zwei Seiten, die die Navigation unterstützen sollen, nämlich ein Inhaltsverzeichnis (ihv.xml) und ein Suchformular (/CGI/suche.pl). Und letztlich noch eine Seite mit dem Impressum. Die Rollenangaben beschreiben jeweils, welche Funktion das Dokument erfüllt.
Bis jetzt gibt es eventuell noch keine Links zwischen den Dokumenten (es sei denn, sie enthalten Inline-Links). Die beiden Bögen (arc) schaffen nun Links von allen inhalt-Seiten und von allen about-site-Seiten auf alle navigation-Seiten (siehe Abbildung 27).
Nicht zu vergessen: Die Elemente, deren Attribut xlink:type den Wert title hat. Überschriften/Beschriftungen können zwar in den anderen XLink-Elementen (siehe oben) über ein Attribut enthalten sein, aber man kann auch Elemente vorsehen, die einen Titel darstellen. Das können durchaus geschachtelte Elemente sein, die allerdings keine Beziehung zu XLink haben.
<!-- in der DTD --> <!ELEMENT wasauchimmer (name)> <!ATTLIST wasauchimmer xlink:type (title) #FIXED "title"> <!-- im Dokument --> <wasauchimmer> <name> <!-- (geschachtelter) Inhalt von name --> <name> <wasauchimmer>
Der XLink-Entwurf sieht einen Sonderfall vor, weil
die Autoren annehmen, dass Listen von Links viel benutzt
werden. Sie definieren als
Link-Basen (linkbase)
XML-Dokumente, die erweiterte Links
enthalten. Und eine externe Link-Menge
(external linkset) ist eine Liste von Referenzen auf die
genannten Basen. Für die Link-Mengen haben die Autoren
vorgesehen, dass sie über einen bestimmten Attributwert als
solche deklariert
werden und ihrerseits Element wie
locator enthalten.
<erweitert xmlns:xlink="http://www.w3.org/1999/xlink" xlink:role="xlink:external-linkset"> <locator ...> <locator ...> ... </erweitert>