edition W3C.de

XML Linking Language (XLink) Version 1.0

Deutsche Übersetzung

26. Juni 2002

Diese Version:
http://www.edition-w3c.de/TR/2001/REC-xlink-20010627/
Aktuelle Version:
http://www.edition-w3c.de/TR/xlink/
Übersetzer:
Daniel Hinz <daniel.hinz@coremedia.com>
Stefan Mintert <stefan@mintert.com>
Axel Wienberg <axel.wienberg@coremedia.com>

Bei diesem Dokument handelt es sich um eine Übersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschützt; bitte beachten Sie die nachfolgenden Hinweise des Originaldokuments. Die Rechte an der Übersetzung liegen bei den Übersetzern. Die Übersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.

Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an die Übersetzer.

Kommentare der Übersetzer, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht der Übersetzer. Sie sind nicht Bestandteil des Ursprungsdokuments.


W3C

XML Linking Language (XLink) Version 1.0

W3C Empfehlung 27. Juni 2001

Diese Version:
http://www.w3.org/TR/2001/REC-xlink-20010627/ (verfügbar in HTML, XML)
Aktuelle Version:
http://www.w3.org/TR/xlink/
Vorherige Version:
http://www.w3.org/TR/2000/PR-xlink-20001220/
Herausgeber:
Steve DeRose , Brown University Scholarly Technology Group
Eve Maler , Sun Microsystems
David Orchard , Jamcracker

Zusammenfassung

Diese Spezifikation definiert die XML-Linksprache (XLink), die es erlaubt, Elemente in XML-Dokumente einzufügen, um Links zwischen Ressourcen zu erzeugen und zu beschreiben. Die Sprache nutzt XML-Syntax, um Strukturen zu erzeugen, die Links beschreiben können, die den einfachen unidirektionalen Hyperlinks des heutigen HTML ähneln, sowie noch ausgefeiltere Links.

Status dieses Dokuments

Dieses Dokument wurde von Mitgliedern des W3C und anderen Interessierten geprüft und vom Direktor als W3C-Empfehlung gebilligt. Es ist ein stabiles Dokument und darf als Referenzmaterial verwendet oder als normative Referenz von einem anderen Dokument zitiert werden. Die Rolle des W3C bei der Erstellung dieser Empfehlung ist es, die Spezifikation bekannt zu machen und ihre breite Anwendung zu fördern. Dies erhöht die Funktionalität und Interoperabilität des Web.

Für Informationen über die XPointer-Sprache, die zusammen mit XLink eingesetzt werden darf, siehe [XPTR].

Dieses Dokument ist von der W3C XML Linking Working Group als Teil der XML-Aktivität in der W3C Architecture Domain erstellt worden. Für Hintergrundinformationen zu dieser Arbeit beachten Sie bitte das XML Activity Statement.

Bitte melden Sie mögliche Fehler in diesem Dokument an die öffentliche E-Mail-Liste www-xml-linking-comments@w3.org (archiviert unter http://lists.w3.org/Archives/Public/www-xml-linking-comments/). Sämtliche bestätigten Fehler werden in einer Liste von Errata dokumentiert, die unter http://www.w3.org/2001/06/xlink-errata verfügbar ist.

Die englische Version dieser Spezifikation ist die einzige normative Version. Informationen über Übersetzungen dieses Dokuments sind verfügbar unter http://www.w3.org/2001/06/xlink-translations.

Siehe [XLDP] für weitere Hintergrundinformationen über die bei XLink beachteten Entwurfsprinzipien und [XLREQ] für die normativen XLink-Anforderungen, die dieses Dokument zu erfüllen versucht. XLink unterstützt nicht alle zurzeit verfügbaren HTML-Link-Konstrukte; siehe [XLinkNaming] für eine Diskussion dieser Situation.

Eine Liste der aktuellen Empfehlungen und anderer technischer Dokumente des W3C kann unter http://www.w3.org/TR/ gefunden werden.

Inhaltsverzeichnis

1 Einleitung
    1.1 Geschichte und Ziele
2 XLink-Konzepte
    2.1 Links und Ressourcen
    2.2 Kanten, Traversierung und Verhalten
    2.3 Ressourcen in Beziehung zum physikalischen Ort eines Link-Elements
3 XLink-Verarbeitung und -Konformität
    3.1 Verarbeitungsabhängigkeiten
    3.2 Markup-Konformität
    3.3 Anwendungskonformität
4 Entwurf des XLink-Markup
    4.1 Verwendungsmuster von XLink-Attributen
    4.2 Beziehungen zwischen XLink-Elementtypen
    4.3 Vorgabe von Attributwerten
    4.4 Integration von XLink-Einsatz mit anderem Markup
    4.5 Einsatz von XLink mit alten Dokumenten
5 XLink-Elemente und -Attribute
    5.1 Erweiterte Links (Element vom Typ extended)
        5.1.1 Lokale Ressourcen für einen erweiterten Link (Element vom Typ resource)
        5.1.2 Entfernte Ressourcen für einen erweiterten Link (Element vom Typ locator)
        5.1.3 Traversierungsregeln für einen erweiterten Link (Element vom Typ arc)
        5.1.4 Titel für erweiterte Links, Adressangaben und Kanten (Element vom Typ title)
        5.1.5 Auffinden von Link-Banken (Spezielle Kantenrolle)
    5.2 Einfache Links (Elemente von Typ simple)
    5.3 Attribut zur Typfestlegung von XLink-Elementen (type)
    5.4 Adressangabe-Attribut (href)
    5.5 Semantische Attribute (role, arcrole und title)
    5.6 Verhaltensattribute (show und actuate)
        5.6.1 Das Attribut show
        5.6.2 Das Attribut actuate
    5.7 Traversierungsattribute (label, from und to)

Anhänge

A Referenzen
    A.1 Normative Referenzen
    A.2 Nicht normative Referenzen
B Beispiel-DTD (nicht normativ)
C Mitglieder der Arbeitsgruppe und Danksagung (nicht normativ)



1 Einleitung

Diese Spezifikation definiert die XML-Linksprache (XLink), die es erlaubt, Elemente in XML-Dokumente einzufügen, um Links zwischen Ressourcen zu erzeugen und zu beschreiben.

XLink bietet einen Rahmen für die Erzeugung sowohl grundlegender unidirektionaler Links als auch komplexerer Link-Strukturen. Die Sprache erlaubt XML-Dokumenten,

Eine wichtige Anwendung für XLink findet sich in Hypermedia-Systemen mit Hyperlinks. Ein einfacher Fall eines Hyperlinks ist das HTML-Element A, das die folgenden Eigenschaften aufweist:

Diese Menge von Eigenschaften ist mächtig, doch das ihnen zugrunde liegende Modell schränkt den Bereich möglicher Hyperlink-Funktionen ein. Das in dieser Spezifikation definierte Modell benutzt genau wie HTML die URI-Technik, geht jedoch über HTML hinaus, indem es Features bietet, die bislang dedizierten Hypermedia-Systemen vorbehalten waren, und die den Einsatz von Hyperlinks skalierbarer und flexibler gestalten. Neben der Bereitstellung von Link-Datenstrukturen bietet XLink ein minimales Link-Verhaltensmodell; Anwendungen höherer Ebene, die auf XLink aufsetzen, werden oft alternative oder ausgefeiltere Darstellungs- und Verarbeitungsverfahren spezifizieren.

Die integrierte Behandlung von in anderen technischen Bereichen verwendeten spezialisierten Links, wie Fremdschlüsseln in relationalen Datenbanken und Objektreferenzen in Programmiersprachen, liegt außerhalb der Zuständigkeit dieser Spezifikation.


1.1 Geschichte und Ziele

Der Entwurf von XLink wurde von der Kenntnis vieler etablierter Hypermedia-Systeme und -Standards beeinflusst. Die folgenden Standards waren besonders einflussreich:

  • HTML [HTML] definiert mehrere Elementtypen, die Links repräsentieren.

  • HyTime [ISO/IEC 10744] definiert Strukturen für eingebettete, eingehende und Third-Party-Links sowie einige semantische Features, u.a. Traversierungskontrolle und Objektpräsentation.

  • Text Encoding Initiative Guidelines [TEI] bietet Strukturen zum Erzeugen von Links, aggregierten Objekten und Linksammlungen.

Auch viele andere Link-Systeme haben zum Entwurf von XLink beigetragen, insbesondere [Dexter], [FRESS], [OHS], [MicroCosm] und [Intermedia].

Im Dokument über Anforderungen an XLink [XLREQ] finden Sie eine genaue Erläuterung von Anforderungen an den Entwurf von XLink.


2 XLink-Konzepte

Dieser Abschnitt beschreibt die Begriffe und Konzepte, die für das Verständnis von XLink wesentlich sind, ohne dabei auf die Syntax für die Erzeugung von XLink-Konstrukten einzugehen. In späteren Abschnitten dieser Spezifikation werden noch ein paar weitere Begriffe eingeführt.


2.1 Links und Ressourcen

[Definition: Ein XLink-Link ist eine explizite Beziehung zwischen Ressourcen oder Teilen von Ressourcen. ] [Definition: Sie wird durch ein XLink-Link-Element explizit gemacht, welches ein XLink-konformes XML-Element ist, das die Existenz eines Links ausdrückt. ] Es gibt sechs XLink-Elemente, von denen nur zwei als Link-Elemente angesehen werden. Die anderen liefern verschiedene Informationen, die die Eigenschaften eines Links beschreiben. (Der Begriff »Link«, so wie er in dieser Spezifikation benutzt wird, bezieht sich nur auf XLink-Links. Es spricht jedoch nichts dagegen, auch Nicht-XLink-Konstrukte als Links einzusetzen.)

Der Begriff Ressource hat im World Wide Web eine universelle Bedeutung. [Definition: Wie in [IETF RFC 2396] beschrieben, ist eine Ressource eine adressierbare Informations- oder Diensteinheit. ] Ressourcen sind zum Beispiel Dateien, Bilder, Dokumente, Programme und Anfrageergebnisse. Mittel zur Adressierung einer Ressource ist eine URI-Referenz (Uniform Resource Identifier Reference, näher beschrieben in 5.4 Adressangabe-Attribut (href)). Es ist möglich, einen Teil einer Ressource zu adressieren. Wenn es sich bei der gesamten Ressource zum Beispiel um ein XML-Dokument handelt, könnte der nützliche Teil dieser Ressource ein bestimmtes Element innerhalb des Dokuments sein. Das Verfolgen eines Links auf diesen Teil könnte z.B. dazu führen, dass das anvisierte Element hervorgehoben wird oder dass der Bildausschnitt an diese Stelle im Dokument verschoben wird.

[Definition: Wenn ein Link eine Menge von Ressourcen miteinander in Beziehung setzt, dann sagen wir, dass diese Ressourcen am Link teilnehmen.] Auch wenn XLink-Links in XML-Dokumenten vorkommen müssen, können sie alle möglichen Arten von Ressourcen miteinander verknüpfen, nicht nur XML-kodierte.

Eine der häufigsten Verwendungen von XLink besteht darin, Hyperlinks zu erzeugen. [Definition: Ein Hyperlink ist ein Link, der hauptsächlich für die Präsentation für einen menschlichen Benutzer gedacht ist.] Es gibt im Entwurf von XLink jedoch nichts, das dagegen spricht, XLink auch für Links zu benutzen, die nur für die Verarbeitung durch Computerprogrammen gedacht sind.


2.2 Kanten, Traversierung und Verhalten

[Definition: Das Benutzen oder Verfolgen eines Links zu welchem Zweck auch immer heißt Traversierung.] Auch wenn einige Arten von Links beliebig viele Ressourcen miteinander assoziieren können, beinhaltet die Traversierung stets nur ein Paar von Ressourcen (oder von Teilen der Ressourcen); [Definition: Die Quelle, von der aus die Traversierung beginnt, heißt Start-Ressource] und [Definition: das Ziel ist die End-Ressource]. Beachten Sie, dass der Begriff »Ressource« in diesem Zusammenhang auch einen Teil einer Ressource bezeichnen kann, nicht unbedingt die ganze Ressource.

[Definition: Informationen darüber, wie ein Paar von Ressourcen zu traversieren ist, inklusive der Traversierungsrichtung und möglichen Anwendungsverhaltens, nennen wir eine Kante]. Wenn zwei Kanten in einem Link dasselbe Ressourcen-Paar spezifizieren, und lediglich Start- und End-Ressource vertauscht sind, dann ist der Link multidirektional, was nicht dasselbe ist, wie einfach nach dem Traversieren eines Links »zurückzugehen«.


2.3 Ressourcen in Beziehung zum physikalischen Ort eines Link-Elements

[Definition: Eine lokale Ressource ist ein XML-Element, das dadurch an einem Link teilnimmt, dass entweder es selbst oder sein Vater ein Link-Element ist]. [Definition: Eine Ressource oder ein Teil einer Ressource, die an einem Link dadurch teilnimmt, dass sie durch eine URI-Referenz adressiert wird, nennen wir eine entfernte Ressource, selbst wenn sie im selben XML-Dokument wie der Link oder sogar im selben Link-Element liegt.] Anders ausgedrückt wird eine lokale Ressource »by value« und eine entfernte Ressource »by reference« angegeben.

[Definition: Eine Kante, die eine lokale Start- und eine entfernte End-Ressource hat, heißt ausgehend, d.h. sie geht fort vom Link-Element.] (Beispiele für Links mit solch einer Kante sind das HTML-A-Element, die »clinks« von HyTime und die XREF-Elemente der Text Encoding Initiative.) [Definition: Wenn die End-Ressource einer Kante lokal ist, aber die Start-Ressource entfernt, dann heißt die Kante eingehend.] [Definition: Wenn weder die Start- noch die End-Ressource lokal sind, heißt die Kante eine Third-Party-Kante.] Auch wenn dies nicht erforderlich ist, spezifiziert ein Link gewöhnlich nur durchgängig eine Art von Kanten, und kann daher als eingehender, ausgehender oder Third-Party-Link bezeichnet werden.

Um einen Link zu erzeugen, der von einer Ressource ausgeht, auf die man keinen Schreibzugriff hat (oder ausüben will), oder von einer Ressource, die keine Möglichkeit bietet, Link-Konstrukte einzubetten, ist es notwendig, eine eingehende oder Third-Party-Kante zu benutzen. Werden solche Kanten benutzt, stellt die Entdeckung des Links höhere Anforderungen als bei ausgehenden Kanten. [Definition: Dokumente, die Sammlungen von eingehenden Links und Third-Party-Links enthalten, werden Link-Datenbanken genannt, oder kurz Link-Banken.]


3 XLink-Verarbeitung und -Konformität

Dieser Abschnitt beschreibt die Verarbeitungs- und Konformitätsanforderungen an XLink-Anwendungen und -Markup.

[Definition: Die Schlüsselwörter muss (MUST), darf nicht (MUST NOT), erforderlich (REQUIRED), soll (SHALL), soll nicht (SHALL NOT), sollte (SHOULD), sollte nicht (SHOULD NOT), empfohlen (RECOMMENDED), darf (MAY) und optional (OPTIONAL) in dieser Spezifikation sind nach [IETF RFC 2119] zu interpretieren.]


3.1 Verarbeitungsabhängigkeiten

XLink-Verarbeitung basiert auf [XML], [XML Names], [XML Base] und [IETF RFC 2396] (mit den Aktualisierungen aus [IETF RFC 2732]).


3.2 Markup-Konformität

Ein XML-Element ist XLink-konform, wenn:

  1. es ein Attribut type aus dem XLink-Namensraum hat, dessen Wert entweder »simple«, »extended«, »locator«, »arc«, »resource«, »title« oder »none« ist und

  2. es die durch den gewählten XLink-Elementtyp auferlegten Konformitätsbeschränkungen, wie durch diese Spezifikation vorgeschrieben, einhält.

Diese Spezifikation verhängt keine besonderen Beschränkungen für DTDs; Konformität bezieht sich nur auf Elemente und Attribute.


3.3 Anwendungskonformität

Eine XLink-Anwendung ist ein beliebiges Softwaremodul, das wohlgeformte XML-Dokumente interpretiert, welche XLink-Elemente und -Attribute enthalten, oder auch XML-Informationsmengen [XIS], die Informations-Items und -eigenschaften enthalten, welche XLink-Elementen und -Attributen entsprechen. (Dieses Dokument bezieht sich auf Elemente und Atttribute, aber alle hier gemachten Angaben gelten auch für die Entsprechungen aus dem Bereich der Informationsmengen). Solch eine Anwendung ist konform, wenn:

  1. sie die in dieser Spezifikation aufgestellten zwingenden Bedingungen für Anwendungen erfüllt (»muss«) und

  2. sie alle optionalen Bedingungen (»sollte« und »darf«), die sie zu erfüllen wünscht, auf die vorgeschriebene Weise erfüllt und

  3. sie Markup-Konformitätstests entsprechend aller in dieser Spezifikation angegebenen Konformitätsbeschränkungen durchführt.


4 Entwurf des XLink-Markup

Dieser Abschnitt beschreibt den Entwurf des Markup-Vokabulars von XLink.

Link-Markup muss von Anwendungen verlässlich erkannt werden, um korrekt traversiert und verarbeitet werden zu können. XLink benutzt den in der Empfehlung "Namensräume in XML" [XML Names] beschriebenen Namensraum-Mechanismus, um die Erkennung von Konstrukten des XLink-Vokabulars zu bewerkstelligen.

Der XLink-Namensraum, der durch diese Spezifikation definiert wird, hat den folgenden URI:

http://www.w3.org/1999/xlink

Wie durch [XML Names] vorgeschrieben, setzt die Benutzung von XLink-Elementen und -Attributen die Deklaration des XLink-Namensraums voraus. Beispielsweise stellt die nachfolgende Deklaration das Präfix xlink innerhalb des Elements vom Typ myElement für die Repräsentation des XLink-Namensraums zur Verfügung:

<myElement 
  xmlns:xlink="http://www.w3.org/1999/xlink">
  ... 
</myElement>

Anmerkung:

Die meisten Code-Beispiele in dieser Spezifikation weisen keine Deklaration des XLink-Namensraums auf. Das Präfix xlink wird durchgängig benutzt, um für die Deklaration des XLink-Namensraumes auf Elementen zu stehen, in deren Bereich das derart markierte Attribut erscheint (auf dem Element, das das Attribut trägt, selbst oder auf einem Vorfahren-Element), unabhängig davon ob eine Deklaration des XLink-Namensraums im Beispiel vorhanden ist oder nicht.

Der Namensraum von XLink bietet globale Attribute zur Benutzung in Elementen jedes beliebigen Namensraums. Die globalen Attribute sind type, href, role, arcrole, title, show, actuate, label, from und to. Dokument-Autoren benutzen die globalen XLink-Attribute, um die Elemente ihres eigenen Namensraums oder sogar eines Namensraums, den sie nicht kontrollieren, als XLink-Elemente kenntlich zu machen. Das Attribut type gibt den XLink-Elementtyp an (simple, extended, locator, arc, resource oder title); der Elementtyp schreibt die durch XLink auferlegten Beschränkungen vor, denen das Element genügen muss, und das Verhalten von XLink-Anwendungen bei Auftreten des Elements.

Es folgt ein Beispiel für ein Element vom Typ crossReference aus einem Nicht-XLink-Namensraum, das globale XLink-Attribute hat:

<my:crossReference 
  xmlns:my="http://example.com/"
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  xlink:type="simple" 
  xlink:href="students.xml" 
  xlink:role="http://www.example.com/linkprops/studentlist" 
  xlink:title="Student List" 
  xlink:show="new" 
  xlink:actuate="onRequest">
Current List of Students 
</my:crossReference>

Die Verwendung globaler Attribute setzt immer die Verwendung von Namensraum-Präfixen auf den individuellen Attributen und die Verwendung des Attributs type auf dem Element voraus.


4.1 Verwendungsmuster von XLink-Attributen

Durch ihre Verwendung des Namensraum-Mechanismus gelten XLink-Attribute automatisch als global. Ihre erlaubten Kombinationen auf einem XLink-Element hängen aber stark ab vom Wert des speziellen Attributs type (für weitere Informationen siehe 5.3 Attribut zur Typfestlegung von XLink-Elementen (type)) des Elements, auf dem sie auftreten. Die Konformitätsbeschränkungen in dieser Spezifikation bestimmen die möglichen Verwendungsmuster. Es folgt eine Zusammenfassung der Elementtypen (Spalten), auf denen die globalen Attribute (Zeilen) erlaubt sind, die anzeigt, ob ein Wert angegeben werden muss (M) oder optional (O) ist:

simple extended locator arc resource title
type M M M M M M
href O   M      
role O O O   O  
arcrole O     O    
title O O O O O  
show O     O    
actuate O     O    
label     O   O  
from       O    
to       O    

(Siehe auch B Beispiel-DTD für eine nicht normative DTD, die die erlaubten Attributmuster illustriert.)

Diese Spezifikation benutzt die Konvention »Element vom Typ xxx«, um sich auf Elemente zu beziehen, die sich an eine benannte, mit einem XLink-Elementtyp verknüpfte Menge von Beschränkungen halten müssen, unabhängig davon, welchen Namen das Element tatsächlich hat. Zum Beispiel würde sich »Element vom Typ locator« auf alle folgenden Elemente beziehen:

<locator xlink:type="locator" ... /> 
<loc xlink:type="locator" ... />
<my:pointer xlink:type="locator" ... />

4.2 Beziehungen zwischen XLink-Elementtypen

Verschiedene XLink-Elementtypen haben spezielle, durch diese Spezifikation vorgeschriebene Bedeutungen, wenn sie als direkte Kinder anderer XLink-Elementtypen auftreten. Es folgt eine Zusammenfassung der Kindelementtypen, die für bestimmte Vaterelementtypen eine signifikante Rolle spielen (andere Kombinationen haben keine durch XLink vorgeschriebene Bedeutung):

Vatertyp Signifikante Kindtypen
simple keine
extended locator, arc, resource, title
locator title
arc title
resource keine
title keine

4.3 Vorgabe von Attributwerten

Der Einsatz von XLink kann zur Folge haben, dass große Mengen von Attributen benutzt werden müssen, um wichtige Link-Informationen auszudrücken. In Fällen, in denen sich die Werte der gewünschten XLink-Attribute über individuelle Instanzen in allen Dokumenten eines bestimmten Typs hinweg nicht verändern, dürfen vorgegebene Attributwerte (fixed oder nicht) zur DTD hinzugefügt werden, so dass diese Attribute nicht mehr physisch auf den Element-Start-Tags auftreten müssen. Wenn zum Beispiel Attributwerte für die Attribute xmlns:xlink, xmlns:my, type, show und actuate im Beispiel in der Einleitung zu 4 Entwurf des XLink-Markup vorgegeben wären, würde das Beispiel wie folgt aussehen:

<my:crossReference 
  xlink:href="students.xml" 
  xlink:role="http://www.example.com/linkprops/studentlist" 
  xlink:title="Student List"> 
Current List of Students 
</my:crossReference>

Bei Informationsmengen, die unter Kontrolle einer DTD erzeugt wurden, sind alle Attributwerte automatisch aufgefüllt.


4.4 Integration von XLink-Einsatz mit anderem Markup

Diese Spezifikation definiert nur Attribute und Attributwerte im XLink-Namensraum. Es gibt keine Beschränkung für die Verwendung von N nicht-XLink-Attributen neben XLink-Attributen. Außerdem sind die meisten XLink-Attribute optional, und die Wahl zwischen einfachem und erweitertem Link liegt ganz beim Markup-Entwickler oder Dokument-Autor, so dass eine DTD, die XLink-Features verwendet, nicht den vollen Satz von Attributen von XLink benutzen oder deklarieren muss. Schließlich benennt diese Spezifikation nur die minimalen Beschränkungen für XLink-Markup. DTDs, die XLink verwenden, steht es frei, diese Beschränkungen zu verschärfen. Der Einsatz von XLink enthebt ein valides Dokument nicht davon, den in seiner bestimmenden DTD ausgedrückten Beschränkungen zu entsprechen.

Es folgt ein Beispiel für ein Element vom Typ crossReference mit sowohl XLink- als auch Nicht-XLink-Attributen:

<my:crossReference 
  xmlns:my="http://example.com/" 
  my:lastEdited="2000-06-10" 
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  xlink:type="simple" 
  xlink:href="students.xml"> 
Current List of Students 
</my:crossReference>

4.5 Einsatz von XLink mit alten Dokumenten

Da die globalen Attibute von XLink die Nutzung von Namensraum-Präfixen erfordern, können nicht-XLink-basierte Links in alten Dokumenten im Allgemeinen nicht so, wie sie sind, als konforme XLink-Konstrukte dienen, selbst wenn Vorgaben für Attributwerte eingesetzt werden. So hat XHTML 1.0 zum Beispiel ein a-Element mit einem href-Attribut. Aber da dieses Attribut lokal an das a-Element im XHTML-Namensraum gebunden wurde, ist es nicht dasselbe wie ein globales xlink:href-Attribut des XLink-Namensraums.


5 XLink-Elemente und -Attribute

XLink bietet zwei Arten von Links:

Erweiterte Links

Erweiterte Links bieten volle XLink-Funktionalität, wie etwa eingehende und Third-Party-Kanten, sowie Links mit beliebig vielen teilnehmenden Ressourcen. Aus diesem Grund kann die Struktur dieser Links recht komplex werden; mit Elementen zum Verweisen auf entfernte Ressourcen, Elementen zum Aufnehmen lokaler Ressourcen, Elementen zur Spezifikation von Kantentraversierungsregeln und Elementen, die für Menschen lesbare Ressourcen- und Kantentitel festlegen.

XLink definiert einen Weg, um einem erweiterten Link spezielle Semantik zum Auffinden von Link-Banken zu geben. Wird ein erweiterter Link auf diese Weise verwendet, hilft er einer XLink-Anwendung, andere Links zu verarbeiten.

Einfache Links

Einfache Links bieten eine Kurzschreibweise für eine häufige Art von Link, nämlich einen ausgehenden Link mit genau zwei teilnehmenden Ressourcen (worunter die HTML-artigen A- und IMG-Links fallen). Da einfache Links eine geringere Funktion als erweiterte Links bieten, haben sie keine spezielle innere Struktur.

Obwohl einfache Links konzeptuell eine Untermenge erweiterter Links sind, sind sie syntaktisch anders. Zum Beispiel wären einige strukturelle Veränderungen nötig, um einen einfachen Link in einen erweiterten Link zu verwandeln.

Der folgende Abschnitt definiert die XLink-Elemente und -Attribute.


5.1 Erweiterte Links (Element vom Typ extended)

[Definition: Ein erweiterter Link ist ein Link, der eine beliebige Anzahl von Ressourcen assoziiert. Die teilnehmenden Ressourcen dürfen eine beliebige Kombination aus entfernten und lokalen Ressourcen sein.]

Die einzige Art von Link, die in der Lage ist, eingehende und Third-Party-Kanten zu haben, ist der erweiterte Link. Üblicherweise werden erweiterte Links getrennt von den Ressourcen gespeichert, die sie assoziieren (zum Beispiel in einem ganz anderen Dokument). Erweiterte Links sind also immer dann wichtig, wenn die teilnehmenden Ressourcen nicht verändert werden können, oder wenn es teuer ist, die Ressourcen zu verändern und zu aktualisieren, es aber günstig ist, ein getrenntes Link-Element zu modifizieren und zu aktualisieren, oder wenn die Ressourcen in Formaten ohne Unterstützung für eingebettete Links vorliegen (wie z.B. viele Multimedia-Datenformate).

Das folgende Diagramm zeigt einen erweiterten Link, der fünf entfernte Ressourcen in Beziehung zueinander setzt. Dies könnte z.B. die Information über die Kurswahl eines Studenten repräsentieren: eine Ressource als eine Beschreibung des Studenten, eine andere als Beschreibung des Betreuers des Studenten, zwei Ressourcen als Repräsentation der Kurse, an denen der Student teilnimmt, und die letzte Ressource als Repräsentation eines Kurses, den der Student nur besucht.

Stylized Diagram of Out-of-Line Extended Link

Ohne den erweiterten Link stünden diese Ressourcen u.U. überhaupt nicht zueinander in Beziehung; z.B. könnten sie in fünf unterschiedlichen Dokumenten liegen. Die vom erweiterten Link ausgehenden Linien repräsentieren die Beziehungen, die durch ihn zwischen den Ressourcen erzeugt werden. Beachten Sie, dass die Kanten nicht gerichtet sind. Richtung wird durch Traversierungsregeln ausgedrückt; ohne Angabe von Traversierungsregeln werden die Ressourcen in keiner bestimmten Reihenfolge assoziiert, ohne zu implizieren, ob und wie auf einzelne Ressourcen zugegriffen wird

Das folgende Diagram zeigt einen erweiterten Link, der fünf entfernte und eine lokale Ressource (ein spezielles Element im erweiterten Link Element) assoziiert. Es könnte dieselbe Art von Kurswahl-Beispiel darstellen wie oben beschrieben, wobei zusätzlich der Numerus Clausus des Studenten lokal gespeichert wird. Wieder repräsentieren die Linien reine Beziehungen der sechs Ressourcen, ohne dass Traversierungsrichtungen oder -verhalten impliziert werden.

Stylized Diagram of Inline Extended Link

Der XLink-Elementtyp für erweiterte Links ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »extended« hat.

Die Elemente vom Typ extended können beliebige Kombinationen der folgenden Elemente in beliebiger Reihenfolge enthalten, möglicherweise neben anderem Content und Markup:

  • Elemente vom Typ locator, die die am Link teilnehmenden entfernten Ressourcen adressieren

  • Elemente vom Typ arc, die die Traversierungsregeln zwischen den teilnehmenden Ressourcen des Links festlegen

  • Elemente vom Typ title, die für Menschen lesbare Bezeichnungen für den Link bieten

  • Elemente vom Typ resource, die am Link teilnehmende lokale Ressourcen beisteuern

Es ist kein Fehler, wenn ein Element vom Typ extended weniger als zwei Ressourcen assoziiert. Wenn der Link nur eine teilnehmende Ressource hat oder sogar gar keine, dann ist er einfach nicht traversierbar. Ein solcher Link kann immer noch nützlich sein, um z.B. mit Hilfe von XLink-Attributen Eigenschaften mit einer einzelnen Ressource zu assoziieren, oder um einen Platzhalter für Link-Information zu bieten, der später ausgefüllt wird.

Subelemente vom Typ simple oder extended irgendwo innerhalb eines Vaterelements vom Typ extended haben keine XLink-spezifizierte Bedeutung. Subelemente vom Typ locator, arc oder resource, die nicht direkte Kinder eines Elements vom Typ extended sind, haben keine XLink-spezifizierte Bedeutung.

Das Element vom Typ extended darf über die semantischen Attribute role und title verfügen (siehe 5.5 Semantische Attribute (role, arcrole und title)). Diese Attribute liefern semantische Information über den Link als Ganzes; das Attribut role beschreibt eine Eigenschaft, die dem gesamten Link zukommt, und das Attribut title ist eine für Menschen lesbare Beschreibung des gesamten Links. Wenn auf dem Element noch andere XLink-Attribute vorhanden sind, stehen sie in keiner XLink-spezifizierten Beziehung zu dem Link. Wenn sowohl ein Attribut title als auch ein oder mehrere Elemente vom Typ title vorhanden sind, stehen sie in keiner XLink-spezifizierten Beziehung. Eine auf XLink aufbauende Anwendung höherer Ebene wird in diesem Fall vermutlich ein angemessenes Verhalten spezifizieren wollen (z.B. Präzedens).

Beispiel für die Elementdeklarationen und -instanzen vom Typ extended

Es folgt eine nicht normative Menge von Deklarationen für ein Element vom Typ extended und seine Subelemente. Teile dieses Beispiels werden im Verlauf der Spezifkation weitergenutzt. Beachten Sie, dass das Attribut type und einige andere Attribute in der DTD durch Vorgabewerte festgelegt werden, um die Attribute zu unterstreichen, die sich von Instanz zu Instanz verändern können.

<!ELEMENT courseload ((tooltip|person|course|nc|go)*)>
<!ATTLIST courseload
  xmlns:xlink     CDATA           #FIXED "http://www.w3.org/1999/xlink"
  xlink:type      (extended)      #FIXED "extended"
  xlink:role      CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED>

<!ELEMENT tooltip ANY>
<!ATTLIST tooltip
  xlink:type      (title)         #FIXED "title"
  xml:lang        CDATA           #IMPLIED>

<!ELEMENT person EMPTY>
<!ATTLIST person
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:role      CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT course EMPTY>
<!ATTLIST course
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:role      CDATA           #FIXED "http://www.example.com/linkprops/course"
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

<!-- NC = "Numerus Clausus" -->
<!ELEMENT nc ANY>
<!ATTLIST nc
  xlink:type      (resource)      #FIXED "resource"
  xlink:role      CDATA           #FIXED "http://www.example.com/linkprops/nc"
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT go EMPTY>
<!ATTLIST go
  xlink:type      (arc)           #FIXED "arc"
  xlink:arcrole   CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:show      (new
                  |replace
                  |embed
                  |other
                  |none)          #IMPLIED
  xlink:actuate   (onLoad
                  |onRequest
                  |other
                  |none)          #IMPLIED
  xlink:from      NMTOKEN         #IMPLIED
  xlink:to        NMTOKEN         #IMPLIED>

Es folgt ein Beispiel dafür, wie XML-Elemente aussehen könnten, die diese Deklaration benutzen:

<courseload>

  <tooltip>Course Load for Pat Jones</tooltip>

  <person
    xlink:href="students/patjones62.xml"
    xlink:label="student62"
    xlink:role="http://www.example.com/linkprops/student"
    xlink:title="Pat Jones" />

  <person
    xlink:href="profs/jaysmith7.xml"
    xlink:label="prof7"
    xlink:role="http://www.example.com/linkprops/professor"
    xlink:title="Dr. Jay Smith" />
  <!-- weitere entfernte Ressourcen für Professoren, Assistenten etc. -->

  <course
    xlink:href="courses/cs101.xml"
    xlink:label="CS-101"
    xlink:title="Computer Science 101" />
  <!-- weitere entfernte Ressourcen für Kurse, Seminare etc. -->

  <nc xlink:label="PatJonesNC">1.7</nc>

  <go
    xlink:from="student62"
    xlink:to="PatJonesNC"
    xlink:show="new"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones's Numerus Clausus" />
  <go
    xlink:from="CS-101"
    xlink:arcrole="http://www.example.com/linkprops/auditor"
    xlink:to="student62"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones, auditing the course" />
  <go
    xlink:from="student62"
    xlink:arcrole="http://www.example.com/linkprops/advisor"
    xlink:to="prof7"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Dr. Jay Smith, advisor" />

</courseload>

5.1.1 Lokale Ressourcen für einen erweiterten Link (Element vom Typ resource)

Ein erweiterter Link weist seine teilnehmenden Ressourcen durch spezielle Subelemente aus, die innerhalb des erweiterten Links auftreten. Ein vollständiges Subelement, zusammen mit seinem gesamten Inhalt, bildet eine lokale Ressource.

Das XLink-Element für lokale Ressourcen ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »resource« hat.

Elemente vom Typ resource dürfen beliebigen Inhalt haben; jeglicher vorhandener Inhalt hat keine XLink-spezifizierte Beziehung zum Link. Es ist möglich, dass ein Element vom Typ resource keinen Inhalt hat; wenn es als Start-Ressource dient, die nach Aufforderung traversiert werden soll, werden interaktive Anwendungen typischerweise einen Inhalt produzieren, um dem Benutzer die Möglichkeit zu geben, die Traversierung anzustoßen. Wenn ein Element vom Typ resource etwas anderes als ein Element vom Typ extended als Vater hat, dann hat das Element vom Typ resource keine XLink-spezifizierte Bedeutung.

Ein Element vom Typ resource darf über die semantischen Attribute role und title (siehe 5.5 Semantische Attribute (role, arcrole und title)) sowie das Traversierungsattribut label (siehe 5.7 Traversierungsattribute (label, from und to)) verfügen. Diese semantischen Attribute speichern Informationen über die Ressource in allgemeinen Begriffen außerhalb des Kontexts einer bestimmten zu dieser Ressource führenden Kante. Das Attribut role beschreibt eine Eigenschaft der Ressource und das Attribut title liefert eine für Menschen lesbare Beschreibung der Ressource. Das Attribut label bietet die Möglichkeit, dass sich ein Element vom Typ arc bei der Erzeugung einer Traversierungskante auf die lokale Ressource beziehen kann.

Beispiele für Elementdeklarationen und -instanzen vom Typ resource

Es folgt eine nicht normative Menge von Deklarationen für ein Element vom Typ resource.

<!ELEMENT nc ANY>
<!ATTLIST nc
  xlink:type      (resource)      #FIXED "resource"
  xlink:role      CDATA           #FIXED "http://www.example.com/linkprops/nc"
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

Es folgt ein Beispiel dafür, wie ein XML-Element aussehen könnte, das diese Deklaration benutzt:

<nc xlink:label="PatJonesNC">3.5</nc>

5.1.2 Entfernte Ressourcen für einen erweiterten Link (Element vom Typ locator)

Ein erweiterter Link zeichnet an ihm teilnehmende entfernte Ressourcen durch Elemente vom Typ locator aus.

Das XLink-Element für Adressangaben ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »locator« hat.

Das Element vom Typ locator darf beliebigen Inhalt haben. Abgesehen von Elementen vom Typ title, die direkte Kinder sind (siehe 5.1.4 Titel für erweiterte Links, Adressangaben und Kanten (Element vom Typ title)), hat jeglicher vorhandene Inhalt keine XLink-spezifizierte Beziehung zum Link. Wenn ein Element vom Typ locator verschachtelte XLink-Elemente enthält, haben diese enthaltenen Elemente keine XLink-spezifizierte Beziehung zu dem Vater-Link. Wenn ein Element vom Typ locator etwas anderes als ein Element vom Typ extended zum Vater hat, dann hat das Element vom Typ locator keine XLink-spezifizierte Bedeutung.

Beschränkung: Attribute von Elementen vom Typ locator

Elemente vom Typ locator müssen das Adressangabe-Attribut tragen (siehe 5.4 Adressangabe-Attribut (href)). Das Adressangabe-Attribut (href) muss einen Wert angegeben haben.

Ein Element vom Typ locator darf die semantischen Attribute role, title (siehe 5.5 Semantische Attribute (role, arcrole und title)) und das Traversierungsattribut label (siehe 5.7 Traversierungsattribute (label, from und to)) haben. Das Adressangabe-Attribut enthält eine URI-Referenz, die eine entfernte Ressource identifiziert. Die semantischen Attribute enthalten allgemeine Informationen über diese Ressource außerhalb des Kontexts einer bestimmten zu ihr führenden Kante; das Attribut role gibt eine Eigenschaft der Ressource an, und das Attribut title bietet eine für Menschen lesbare Beschreibung der Ressource. Das Attribut label bietet die Möglichkeit, dass sich ein Element vom Typ arc bei der Erzeugung einer Traversierungskante auf die entfernte Ressource beziehen kann.

Anmerkung:

Ein Element vom Typ locator zählt für sich gesehen nicht als Link, obwohl es über ein Attribut href verfügt. Im Gegensatz zu einem Element vom Typ simple erzeugt es keine durch XLink bestimmte Assoziation zwischen sich selbst und der referenzierten Ressource.

Beispiel für Elementdeklarationen und -instanzen vom Typ locator

Es folgt eine nicht normative Menge von Deklarationen für Elemente vom Typ locator.

<!ELEMENT person EMPTY>
<!ATTLIST person
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:role      CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT course EMPTY>
<!ATTLIST course
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:role      CDATA           #FIXED "http://www.example.com/linkprops/course"
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

Es folgt ein Beispiel dafür, wie ein XML-Element aussehen könnte, das diese Deklaration benutzt:

<person
  xlink:href="students/patjones62.xml"
  xlink:label="student62"
  xlink:role="http://www.example.com/linkprops/student"
  xlink:title="Pat Jones" />

<person
  xlink:href="profs/jaysmith7.xml"
  xlink:label="prof7"
  xlink:role="http://www.example.com/linkprops/professor"
  xlink:title="Dr. Jay Smith" />

<course
  xlink:href="courses/cs101.xml"
  xlink:label="CS-101"
  xlink:title="Computer Science 101" />

5.1.3 Traversierungsregeln für einen erweiterten Link (Element vom Typ arc)

Ein erweiterter Link darf Traversierungsregeln zwischen beteiligten Ressourcen mit Hilfe einer Folge von optionalen Kantenelementen festlegen.

Das XLink-Element für Kanten ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »arc« hat.

Das Element vom Typ arc darf beliebigen Inhalt haben. Abgesehen von Elementen vom Typ title, die direkte Kinder sind (siehe 5.1.4 Titel für erweiterte Links, Adressangaben und Kanten (Element vom Typ title)), hat jeglicher vorhandener Inhalt keine XLink-spezifizierte Beziehung zu dem Link. Wenn das Element vom Typ arc etwas anderes als ein Element vom Typ extended zum Vater hat, dann hat dieses Element vom Typ arc keine XLink-spezifizierte Bedeutung.

Das Element vom Typ arc darf über die Traversierungsattribute from und to (siehe 5.7 Traversierungsattribute (label, from und to)), die Verhaltensattribute show und actuate (siehe 5.6 Verhaltensattribute (show und actuate)) und die semantischen Attribute arcrole und title (siehe 5.5 Semantische Attribute (role, arcrole und title)) verfügen.

Die Traversierungsattribute legen das gewünschte Verhalten beim Traversieren zwischen Paaren von Ressourcen fest, die am selben Link teilnehmen, wobei die Ressourcen durch den Wert ihres Attributs label identifiziert werden. Das Attribut from legt die Ressourcen fest, von denen die Traversierung begonnen werden darf (d.h. die Start-Ressourcen), während das Attribut to Ressourcen festlegt, zu denen traversiert werden darf (d.h. die End-Ressourcen). Die Verhaltensattribute legen das gewünschte Verhalten einer XLink-Anwendung bei der Traversierung zu der End-Ressource fest.

Die semantischen Attribute beschreiben die Bedeutung der End-Ressource der Kante relativ zu ihrer Start-Ressource. Das Attribut arcrole entspricht dem [RDF]-Begriff der Eigenschaft (property), wobei die Rolle so interpretiert werden kann, dass sie aussagt: »Start-Ressource HAT Rolle End-Ressource«. Die kontextuelle Rolle kann sich von der Bedeutung der End-Ressource unterscheiden, wenn diese außerhalb des Kontexts dieser bestimmten Kante betrachtet wird. So kann zum Beispiel eine Ressource generisch eine »Person« repräsentieren, jedoch im Kontext einer bestimmten Kante die Rolle der »Mutter« und im Kontext einer anderen Kante die Rolle der »Tochter« übernehmen.

Wenn dieselbe Ressource als Start-Ressource für mehrere Kanten dient (ob in einem einzelnen Link oder Link-übergreifend), wird das Traversierungsanfrageverhalten von dieser Spezifikation nicht beschränkt, aber eine Möglichkeit für interaktive Anwendungen wäre ein Pop-up-Menü, das alle relevanten Kanten- oder Link-Titel auflistet.

Das folgende Diagramm zeigt einen erweiterten Link, der fünf entfernte Ressourcen assoziiert und Regeln für die Traversierung zwischen ihnen bereitstellt. Alle spezifizierten Kanten sind Third-Party-Kanten; sie verlaufen ausschließlich zwischen entfernten Ressourcen. Die ungerichteten durchgezogenen Linien drücken wie vorher aus, dass der Link die fünf Ressourcen assoziiert; die neuen gestrichelten Pfeile visualisieren die Traversierungsregeln, die der Link bietet. Beachten Sie, dass sich einige Ressourcen den gleichen label-Wert teilen.

Stylized Diagram of Out-of-Line Extended Link with Arcs

Das Diagram zeigt die gerichteten Traversierungskanten, die durch die folgenden Einstellungen erzeugt werden, wobei sowohl den As als auch den Cs erlaubt wird, die Traversierung zu allen Bs auszulösen. Da einige label-Werte auf mehreren Ressourcen auftreten, erzeugt jede Kantenspezifikation potenziell mehrere Traversierungskanten gleichzeitig:

<go xlink:type="arc" xlink:from="A" xlink:to="B" /> 
<go xlink:type="arc" xlink:from="C" xlink:to="B" />

Ein weiteres Beispiel: Nehmen wir einen erweiterten Link an, der fünf Adressangaben enthält, zwei mit dem label-Wert »parent« und drei mit dem label-Wert »child«:

<extendedlink xlink:type="extended"> 
   <loc xlink:type="locator" 
        xlink:href="..." 
        xlink:label="parent" 
        xlink:title="p1" /> 
   <loc xlink:type="locator" 
        xlink:href="..." 
        xlink:label="parent" 
        xlink:title="p2" /> 
   <loc xlink:type="locator" 
        xlink:href="..." 
        xlink:label="child" 
        xlink:title="c1"  /> 
   <loc xlink:type="locator" 
        xlink:href="..." 
        
        xlink:label="child" 
        xlink:title="c2"  /> 
   <loc xlink:type="locator" 
        xlink:href="..." 
        xlink:label="child" 
        xlink:title="c3"  /> 
   ... 
   <!-- Elemente vom Typ arc würden hier folgen. --> 
</extendedlink> 
      

Das folgende Fragment spezifiziert Traversierung von »parent«-Ressourcen zu »child«-Ressourcen, wozu p1-c1, p1-c2, p1-c3, p2-c1, p2-c2 und p2-c3 gehören:

<go xlink:type="arc" xlink:from="parent" xlink:to="child" />

Wenn für ein Attribut from oder to kein Wert angegeben ist, wird der fehlende Wert so interpretiert, dass er für alle label-Werte steht, die auf Elementen vom Typ locator in dem jeweiligen Element vom Typ extended angegeben sind. So spezifiziert das folgende Beispiel die Traversierungen von »parent«-Ressourcen zu »child«-Ressourcen und auch von »child«-Ressourcen zu »child«-Ressourcen, wozu p1-c1, p1-c2, p1-c3, p2-c1, p2-c2, p2-c3, c1-c1, c1-c2, c1-c3, c2-c1, c2-c2, c2-c3, c3-c1, c3-c2 und c3-c3 gehören:

<go xlink:type="arc" xlink:to="child" />

Beachten Sie, dass in diesem Fall zu den Traversierungsregeln auch Kanten von Ressourcen zu Ressourcen mit gleichem Label gehören (von »child« zu »child«) sowie von einigen Ressourcen zu sich selbst (von einem »child« zu sich selbst); das ist kein Fehler.

Wenn in einem erweiterten Link kein Element vom Typ arc angegeben ist, dann werden folgerichtig die fehlenden Attributwerte für from und to so interpretiert, dass sie für alle Label in diesem Link stehen. Dies wäre äquivalent zur folgenden Traversierungsspezifikation:

<go xlink:type="arc" />

Wenn mehr als ein Element vom Typ locator das gleiche Label hat, dann sind die locator mit dem gleichen Label als individuelle locator zu verstehen, nicht als Referenz auf eine aggregierte Ressource. Das Traversierungsverhalten eines solchen Links könnte das gleiche sein wie bei einem Link, in dem alle locator unterschiedliche Rollen haben und die passenden Kanten spezifiziert sind, um identische Traversierungspaare zu produzieren.

Wenn die Kantentraversierungsregeln für einen erweiterten Link irgendwelche möglichen Traversierungspaare auslassen, definiert XLink keine Traversierung für diese Paare. Eine Anwendung höherer Ebene darf jedoch nicht-XLink-gesteuerte Traversierungen ausführen; so könnte z.B. ein Link-Überprüfungsprozess alle verfügbaren Ressourcenpaare traversieren.

Beschränkung: Keine Kantenduplikation

Jedes Element von Typ arc muss ein Paar aus to- und from-Werten haben, das nicht die to- und from-Werte irgendeines anderen Elements vom Typ arc in demselben erweiterten Link wiederholt; d.h. jedes Paar in einem Link muss einzigartig sein.

Beispiel für Elementdeklarationen und -instanzen vom Typ arc

Es folgt eine nicht normative Menge von Deklarationen für ein Element vom Typ arc.

<!ELEMENT go EMPTY>
<!ATTLIST go
  xlink:type      (arc)           #FIXED "arc"
  xlink:arcrole   CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:show      (new
                  |replace
                  |embed
                  |other
                  |none)          #IMPLIED
  xlink:actuate   (onLoad
                  |onRequest
                  |other
                  |none)          #IMPLIED
  xlink:from      NMTOKEN         #IMPLIED
  xlink:to        NMTOKEN         #IMPLIED>

Es folgt ein Beispiel dafür, wie ein XML-Element aussehen könnte, das diese Deklaration benutzt:

<go
  xlink:from="student62"
  xlink:to="PatJonesNC"
  xlink:show="new"
  xlink:actuate="onRequest"
  xlink:title="Pat Jones's NC" />
<go
  xlink:from="CS-101"
  xlink:arcrole="http://www.example.com/linkprops/auditor"
  xlink:to="student62"
  xlink:show="replace"
  xlink:actuate="onRequest"
  xlink:title="Pat Jones, auditing the course" />
<go
  xlink:from="student62"
  xlink:arcrole="http://www.example.com/linkprops/advisor"
  xlink:to="prof7"
  xlink:show="replace"
  xlink:actuate="onRequest"
  xlink:title="Dr. Jay Smith, advisor" />

5.1.4 Titel für erweiterte Links, Adressangaben und Kanten (Element vom Typ title)

Die Elemente vom Typ extended, locator und arc dürfen das Attribut title tragen (für weitere Informationen darüber siehe auch 5.5 Semantische Attribute (role, arcrole und title)). Sie dürfen aber auch eine Folge von einem oder mehreren Elementen vom Typ title enthalten. Solche Elemente sind zum Beispiel dann nützlich, wenn für Menschen lesbare Beschreibungsinformation weiteren Element-Markup benötigt, oder wenn mehrfache Titel nötig sind. Eine häufige Motivation für den Einsatz der Elemente vom Typ title ist die Behandlung von Internationalisierung und Lokalisierung. Zum Beispiel kann title-Markup für bidirektionale Kontexte oder in ostasiatischen Sprachen notwendig werden und mehrfache Titel können für verschiedene natürlich-sprachliche Versionen eines Titels erforderlich werden.

Das XLink-Element für Titel ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »title« hat.

Das Element vom Typ title darf beliebigen Inhalt haben. Wenn ein Element vom Typ title verschachtelte XLink-Elemente enthält, dann stehen diese enthaltenen Elemente in keiner XLink-spezifizierten Beziehung zu dem Vater-Link, der den Titel enthält. Wenn das Element vom Typ title etwas anderes als ein Element vom Typ extended, locator oder arc zum Vater hat, hat dieses Element vom Typ title keine XLink-spezifizierte Bedeutung.

Beispiel für Elementdeklarationen und -instanz vom Typ title

Es folgt eine nicht normative Menge von Deklarationen für ein Element vom Typ title. Dem Element wurde ein Attribut xml:lang verliehen, das im Zusammenhang mit Server-Einstellungen oder anderer Kontextinformation benutzt werden darf, um zu entscheiden, welcher Titel angezeigt werden soll.

<!ELEMENT advisorname (name)> 
<!ATTLIST advisorname
  xlink:type      (title)         #FIXED "title"
  xml:lang        CDATA           #IMPLIED>

<!ELEMENT name (honorific?, given, family)> 
<!-- weitere Subelementdeklarationen für Namen -->

Es folgt ein Beispiel dafür, wie ein XML-Element aussehen könnte, das diese Deklaration benutzt:

<advisor xlink:href="profs/jaysmith7.xml" ...>
  <advisorname xml:lang="en">
    <name>
      <honorific>Dr.</honorific>
      <given>Jay</given>
      <family>Smith</family>
    </name>
  </advisorname>
</advisor>

5.1.5 Auffinden von Link-Banken (Spezielle Kantenrolle)

Damit eine XLink-Anwendung von einer Start-Ressource zu einer End-Ressource traversieren kann, muss sie sowohl die Start-Ressource als auch den Link auffinden können. Im Falle ausgehender Kanten ist das kein Problem, da die Start-Ressource entweder das Link-Element selbst oder ein Kind des Link-Elements ist. Im Fall von Third-Party-Kanten und eingehenden Kanten muss die XLink-Anwendung jedoch beide Teile irgendwie finden können.

In unserem Kurswahl-Beispiel können erweiterte Links solche Paare von entfernten Ressourcen zueinander in Beziehung setzen, die Studenten und Kurse repräsentieren. Damit das System eine »Studenten-Ressource« (z.B. eine Beschreibung mit Bild der Person) auf eine Art und Weise laden und präsentieren kann, die die Traversierung zu verwandter Informationen bietet (z.B. indem Benutzern erlaubt wird, auf den Namen der Studentin zu klicken, um zu Informationen über die Kurse zu traversieren, in denen sie eingeschrieben ist), muss es die erweiterten Links, die die Beziehungen beschreiben, auffinden und benutzen können.

Link-Banken werden oft benutzt, um das Link-Management zu erleichtern, indem sie eine Anzahl miteinander verwandter Link-Elemente zusammentragen. XLink bietet einen Weg, um XLink-Anwendungen anzuweisen, auf potenziell relevante Link-Banken zuzugreifen. Die Anweisung erfolgt in Form einer Kantenspezifikation (entweder durch eine explizite in einem erweiterten Link oder eine implizite in einem einfachen Link), deren Attribut arcrole den folgenden Wert hat:

http://www.w3.org/1999/xlink/properties/linkbase

Beschränkung: Link-Banken müssen XML sein

Jede Link-Bank, die als End-Ressource einer Kante mit diesem speziellen Wert ausgewiesen wird, muss ein XML-Dokument sein.

(XLink-Anwendungen dürfen auch beliebige andere Mittel benutzen, um weitere Link-Banken aufzufinden und zu verarbeiten.)

Eine Link-Bank-Kante wird ähnlich behandelt wie eine normale Kante, mit dem Unterschied dass die Traversierung die End-Ressource (die Link-Bank) lädt, um alle darin enthaltenen Links zur späteren Verwendung zu extrahieren, anstatt die Ressource einem Benutzer zu präsentieren oder eine anderweitige Verarbeitug durchzuführen. Als weitere Besonderheit müssen XLink-Anwendungen die Traversierung der Kante benutzeroptional unterbrechen.

Wenn eine XLink-Anwendung eine Link-Bank-Kante lädt, sollte sie sich die Start-Ressource merken. Wann immer ein Dokument geladen wird, das diese Start-Ressource enthält, und die Traversierung der Link-Bank-Kante ausgelöst wird, sollte die Anwendung auf die Link-Bank zugreifen und alle darin gefundenen Links extrahieren. Ist die extrahierte Ressource ein Ausschnitt eines kompletten XML-Dokuments, wie etwa ein Bereich oder ein Zeichenkettenbereich, sollten nur solche erweiterten Links zur Verfügung gestellt werden, die komplett im extrahierten Ausschnitt liegen.

Der Zeitpunkt der Traversierung einer Link-Bank-Kante hängt vom Wert des Attributs actuate der Kante ab. Ist der Wert zum Beispiel »onLoad«, wird die Link-Bank geladen und ihre Links werden extrahiert, sobald die Start-Ressource geladen wird. Jeglicher Attributwert für »show« an einer Link-Bank-Kante muss ignoriert werden, da die Traversierung in diesem Falle keine Präsentation nach sich zieht.

Link-Banken dürfen dadurch verkettet werden, dass sie als Start-Ressource für eine weitere Link-Bank-Kante dienen. Die Anwendung, die die initiale Link-Bank-Kante interpretiert, darf die Anzahl der in dieser Link-Kette verarbeiteten Schritte begrenzen.

Eine Anwendung sollte eine Liste der erweiterten Links verwalten, die bei der Verarbeitung einer Link-Bank geladen wurden, und sollte keine Duplikate von Ressourcen oder Links laden, wenn zyklische Abhängigkeiten bestehen. Um die XLink-Verarbeitung zu erleichtern, dürfen Dokument-Autoren Link-Bank-Kanten nahe des Anfangs eines Dokuments definieren.

Annotierung einer Spezifikation

Es folgt eine nicht normative Menge von Deklarationen für einen erweiterten Link, der auf die Bereitstellung von Link-Bank-Kanten spezialisiert ist:

<!ELEMENT basesloaded ((startrsrc|linkbase|load)*)>
<!ATTLIST basesloaded
  xlink:type      (extended)      #FIXED "extended">

<!ELEMENT startrsrc EMPTY>
<!ATTLIST startrsrc
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT linkbase EMPTY>
<!ATTLIST linkbase
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT load EMPTY>
<!ATTLIST load
  xlink:type      (arc)           #FIXED "arc"
  xlink:arcrole   CDATA           #FIXED "http://www.w3.org/1999/xlink/properties/linkbase"
  xlink:actuate   (onLoad
                  |onRequest
                  |other
                  |none)          #IMPLIED
  xlink:from      NMTOKEN         #IMPLIED
  xlink:to        NMTOKEN         #IMPLIED>

Es folgt ein Beispiel dafür, wie ein XML-Element aussehen könnte, das diese Deklarationen benutzt. Wenn im Beispiel ein Spezifikationsdokument geladen wird, soll automatisch auch eine Link-Bank voller Annotationen zu dieser Spezifikation geladen werden. Dadurch kann eine Neudarstellung des gesamten Spezifikationsdokuments erforderlich werden, um Bereiche darin zu offenbaren, die als Start-Ressource für in der Link-Bank gefundene Links dienen.

<basesloaded>
  <startrsrc xlink:label="spec" xlink:href="spec.xml" />
  <linkbase xlink:label="linkbase" xlink:href="linkbase.xml" />
  <load xlink:from="spec" xlink:to="linkbase" actuate="onLoad" />
</basesloaded>

Es folgt ein Beispiel dafür, wie ein XML-Element unter Verwendung der Deklarationen aussehen könnte, falls die Link-Bank nur auf Anfrage geladen wird. Hier besteht die Start-Ressource aus den Worten »Click here to reveal annotations«. Wäre die Start-Ressource wie im obigen Beispiel das gesamte Dokument, bestünde ein vernünftiges Verhalten, um dem Benutzer zu erlauben, die Traversierung auszulösen, in einer Bestätigungs-Dialogbox.

<basesloaded>
  <startrsrc
    xlink:label="spec"
    xlink:href="spec.xml#string-range(//*,'Click here to reveal annotations.')" />
  <linkbase xlink:label="linkbase" xlink:href="linkbase.xml" />
  <load xlink:from="spec" xlink:to="linkbase" actuate="onRequest" />
</basesloaded>

5.2 Einfache Links (Elemente von Typ simple)

[Definition: Ein einfacher Link ist ein Link, der genau zwei Ressourcen zueinander in Beziehung setzt, eine lokale und eine entfernte, mit einer Kante von der ersteren zur letzteren Ressource. Ein einfacher Link ist also immer ein ausgehender Link.]

Der Zweck eines einfachen Links besteht darin, eine bequeme Kurzschreibweise für den äquivalenten erweiterten Link zu bieten. Ein einziges einfaches Link-Element kombiniert die grundlegenden Funktionen eines Elements mit dem Typ extended, eines Elements mit dem Typ locator, eines Elements mit dem Typ arc und eines Elements mit dem Typ resource.

Das folgende Diagramm zeigt die Charakteristika eines einfachen Links; er assoziiert eine lokale und eine entfernte Ressource, und bietet implizit eine einzige Traversierungskante von der lokalen Ressource zur entfernten. Dies könnte z.B. den Namen eines Studenten repräsentieren, der in einem Text erscheint, der beim Anklicken zu Informationen über den Studenten führt.

Stylized Diagram of Simple Link
Funktion eines einfachen Links, ausgedrückt durch einen erweiterten Link

Ein einfacher Link könnte annähernd auf folgende Art und Weise durch einen erweiterten Link repräsentiert werden:

<studentlink xlink:type="extended">
  <resource
    xlink:type="resource"
    xlink:label="local">Pat Jones</resource>
  <locator
    xlink:type="locator"
    xlink:href="..."
    xlink:label="remote"
    xlink:role="..."
    xlink:title="..." />
 
  <go
    xlink:type="arc"
    xlink:from="local"
    xlink:to="remote"
    xlink:arcrole="..."
    xlink:show="..."
    xlink:actuate="..." />
</studentlink>

Ein einfacher Link kombiniert alle obigen Features (außer den Typen und Labels) in einem einzigen Element. In Fällen, in denen nur eine Teilmenge der Features benötigt wird, steht das einfache Link-Element von XLink als Alternative zum erweiterten Link-Element zur Verfügung. Die folgenden Features fehlen bei einfachen Links:

  • Angabe einer beliebigen Anzahl lokaler und entfernter Ressourcen

  • Spezifikation einer Kante von der entfernten zur lokalen Ressource

  • Zuweisung eines Titels zu der einen fest verdrahteten Kante

  • Zuweisung einer Rolle oder eines Titels zu der lokalen Ressource

  • Zuweisung einer Rolle oder eines Titels zu dem Link als Ganzem

Das XLink-Element für einfache Links ist ein beliebiges Element mit einem Attribut type aus dem XLink-Namensraum, das den Attributwert »simple« hat. Die einfache Entsprechung zum obigen erweiterten Link wäre wie folgt:

<studentlink xlink:href="...">Pat Jones</studentlink>

Das Element vom Typ simple darf beliebigen Inhalt haben. Das Element vom Typ simple selbst, zusammen mit seinem gesamten Inhalt, ist die lokale Ressource des Links, genau so, als wäre das Element vom Typ resource. Wenn ein Element vom Typ simple verschachtelte XLink-Elemente enthält, dann haben solche enthaltenen Elemente keine XLink-spezifizierte Beziehung zu ihrem Vater-Link. Es ist möglich, dass ein Element vom Typ simple keinen Inhalt hat; in Fällen, in denen man erwartet, dass der Link auf Anfrage zu traversieren ist, werden interaktive XLink-Anwendungen typischerweise Inhalt generieren, um dem Benutzer eine Möglichkeit zu bieten, die Traversierung auszulösen.

Das Element vom Typ simple übernimmt praktisch das Adressangabe-Attribut href sowie die semantischen Attribute role und title vom Element vom Typ locator und die Verhaltensattribute show, actuate und das einzige semantische Attribut arcrole vom Element vom Typ arc.

Es ist kein Fehler, wenn ein Element vom Typ simple keinen Adressangabe-(href)-Attributwert hat. Wird kein Wert angegeben, ist der Link einfach nicht traversierbar. Ein solcher Link kann dennoch nützlich sein, z.B. um mit Hilfe von XLink-Attributen der Ressource Eigenschaften zuzuweisen.

Beispieldeklarationen und -instanz für ein Element vom Typ simple

Es folgt eine nicht normative Deklarationsmenge für ein Element vom Typ simple.

<!ELEMENT studentlink ANY>
<!ATTLIST studentlink
  xlink:type      (simple)        #FIXED "simple"
  xlink:href      CDATA           #IMPLIED
  xlink:role      NMTOKEN         #FIXED "http://www.example.com/linkprops/student"
  xlink:arcrole   CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:show      (new
                  |replace
                  |embed
                  |other
                  |none)          #IMPLIED
  xlink:actuate   (onLoad
                  |onRequest
                  |other
                  |none)          #IMPLIED>

Ein XML-Dokument könnte diese Deklarationen wie folgt benutzen.

... und <studentlink xlink:href="students/patjones62.xml">Pat
Jones</studentlink> ist in der Studentenverbindung sehr beliebt.

5.3 Attribut zur Typfestlegung von XLink-Elementen (type)

Das Attribut, das XLink-Elementtypen identifiziert, ist type.

Beschränkung: Wert für type

Der Wert des Attributs type muss angegeben werden. Der Wert muss einer der Werte »simple«, »extended«, »locator«, »arc«, »resource«, »title« oder »none« sein.

Wenn das Attribut type den Wert »none« hat, hat das Element keine XLink-spezifizierte Bedeutung und jeglicher XLink-bezogene Inhalt und jegliche XLink-bezogenen Attribute haben keine XLink-spezifizierte Beziehung zu dem Element.

Beispieldeklarationen für das Attribut type

Es folgt eine nicht normative Attribut-Listen-Deklaration für type an einem Element, das den Typ simple bekommen soll.

<!ATTLIST xlink:simple
  xlink:type      (simple)        #FIXED "simple"
  ...>

Für ein Element, das nur bei manchen Gelegenheiten als XLink-Element dient, könnte eine Deklaration wie folgt aussehen, wobei der Ersteller eines Dokuments den Wert unter gewissen Umständen auf »simple« und unter anderen Ummständen auf »none« setzt. Die Verwendung von »none« kann nützlich sein, um XLink-Anwendungen dabei zu helfen, den Test auf Anwesenheit eines href-Attributs zu vermeiden.

<!ATTLIST commandname
  xlink:type      (simple|none)   #REQUIRED
  xlink:href      CDATA           #IMPLIED>

5.4 Adressangabe-Attribut (href)

Das Attribut, das die Information liefert, mit der eine XLink-Anwendung eine entfernte Ressource (oder ein Ressourcen-Fragment) finden kann, heißt href. Es darf auf Elementen vom Typ simple verwendet werden und muss auf Elementen vom Typ locator verwendet werden.

Der Wert des href-Attributs muss eine URI-Referenz sein, wie sie in [IETF RFC 2396] definiert ist, oder muss nach Anwendung der unten beschriebenen escaping-Prozedur eine URI-Referenz ergeben. Die Prozedur wird angewendet, wenn die URI-Referenz einem URI-Resolver übergeben wird.

Einige Zeichen sind in URI-Referenzen nicht erlaubt, auch wenn sie in XML erlaubt sind; die nicht erlaubten Zeichen beinhalten alle Nicht-ASCII-Zeichen sowie die in Abschnitt 2.4 von [IETF RFC 2396] aufgelisteten ausgeschlossenen Zeichen, mit Ausnahme des Doppelkreuzzeichens (#) und des Prozentzeichens (%) und der eckigen Klammer, die in [IETF RFC 2732] wieder erlaubt wurden. Nicht erlaubte Zeichen müssen wie folgt ersetzt werden:

  1. Jedes nicht erlaubte Zeichen wird nach UTF-8 [IETF RFC 2279] in ein oder mehrere Bytes konvertiert.

  2. Bytes, die einem nicht erlaubten Zeichen entsprechen, werden mit dem URI-Ersetzungs-Mechanismus ersetzt (d.h. sie werden in %HH konvertiert, wobei HH die hexadezimale Notation des Byte-Werts ist).

  3. Das Originalzeichen wird durch die resultierende Zeichenfolge ersetzt.

Da es für eine Anwendung nicht durchführbar ist, zu prüfen, ob ein Wert eine URI-Referenz ist, folgt diese Spezifikation in dieser Angelegenheit dem in [IETF RFC 2396] eingeschlagenen Pfad und erlegt XLink-Anwendungen keine solchen Anforderungen zur Konformitätsprüfung auf.

Wenn die URI-Referenz relativ ist, muss vor Verwendung mit der in [XML Base] beschriebenen Methode ihre absolute Adresse berechnet werden.

Für Adressangaben, die in XML-Ressourcen verweisen, wird das in der URI-Referenz verwendete Format für den Fragment-Identifikator (falls vorhanden) durch die XPointer-Spezifikation spezifiziert [XPTR].

Beispieldeklarationen für das href-Attribut

Es folgt eine nicht normative Attribut-Listen-Deklaration für href an einem Element, das den Typ simple haben soll.

<!ATTLIST simplelink
  xlink:href      CDATA           #REQUIRED
  ...>

5.5 Semantische Attribute (role, arcrole und title)

Die Attribute, die die Bedeutung von Ressourcen im Kontext eines Links beschreiben, sind role, arcrole und title. Das Attribut role darf auf Elementen mit dem Typ extended, simple, locator und resource verwendet werden. Das Attribut arcrole darf auf Elementen mit dem Typ arc und simple verwendet werden. Das Attribut title darf auf Elementen mit all diesen Typen verwendet werden.

Der Wert der Attribute role und arcrole muss eine URI-Referenz sein, wie in [IETF RFC 2396] definiert, mit der Einschränkung, dass der URI-Anteil absolut sein muss, falls das verwendete URI-Schema absolute und relative Formen gestattet. Die URI-Referenz identifiziert eine Ressource, die die intendierte Eigenschaft beschreibt. Wird kein Wert angegeben, so ist kein besonderer Rollenwert abzuleiten. In URI-Referenzen nicht erlaubte Zeichen in diesen Attributwerten müssen wie in 5.4 Adressangabe-Attribut (href) beschrieben speziell kodiert werden.

Das Attribut title wird benutzt, um die Bedeutung eines Links oder einer Ressource auf für Menschen lesbare Art zu beschreiben, ähnlich wie das role oder arcrole-Attribut (siehe allerdings auch 5.1.4 Titel für erweiterte Links, Adressangaben und Kanten (Element vom Typ title)). Ein Wert ist optional; wird ein Wert angegeben, so sollte er einen String enthalten, der die Ressource beschreibt. Die Verwendung dieser Information hängt sehr stark von der Art der vorgenommenen Verarbeitung ab. Sie darf z.B. benutzt werden, um Titel für Software für sehbehinderte Benutzer zur Verfügung zu stellen oder um ein Linkverzeichnis zu erstellen, oder um einen Hilfetext zu präsentieren, der erscheint, wenn der Benutzer den Mauszeiger über der Start-Ressource schweben lässt.

Beispiel-Deklarationen für die Attribute role und title

Es folgt eine nicht normative Attribut-Listen-Deklaration für role und title an einem Element, das den Typ simple haben soll.

<!ATTLIST simplelink
          ...
          xlink:role      CDATA           #IMPLIED
          xlink:title     CDATA           #IMPLIED
          ...>

Es folgt eine nicht normative Attribut-Listen-Deklaration für arcrole und title an einem Element, das den Typ arc haben soll.

<!ATTLIST go
  ...
  xlink:arcrole   CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  ...>

5.6 Verhaltensattribute (show und actuate)

Die Verhaltensattribute sind show und actuate. Sie dürfen in Elementen mit dem Typ simple und arc benutzt werden. Werden sie in einem Element vom Typ simple benutzt, geben sie das beabsichtigte Verhalten für die Traversierung zur einzigen End-Ressource dieses Links an. Werden sie auf ein Element vom Typ arc angewandt, geben sie das beabsichtigte Verhalten für die Traversierung zu sämtlichen End-Ressourcen (lokal oder entfernt) an, die durch diese Kante spezifiziert werden.

Die Attribute show und actuate müssen nicht angegeben werden. Werden sie benutzt, sollten konforme XLink-Anwendungen ihnen die in diesem Abschnitt spezifizierte Behandlung zukommen lassen. Es gibt keine harte Anforderung (»muss«) für diese Behandlung, denn es ist nicht anzunehmen, dass die für eine interaktive Anwendung wie z.B. einen Browser sinnvolle Behandlung auch für eine nicht interaktive Anwendung wie einen Roboter sinnvoll ist. Allerdings sollten alle Anwendungen die vollen Implikationen einer Abweichung vom spezifizierten Verhalten in Betracht ziehen, bevor sie einen anderen Weg einschlagen.

Beispieldeklarationen für show- und actuate-Attribute

Es folgt eine nicht normative Attribut-Listen-Deklaration für show und actuate an einem Element, das den Typ simple haben soll.

<!ATTLIST simplelink
  xlink:type      (simple)        #FIXED "simple"
  ...
  xlink:show      (new
                  |replace
                  |embed
                  |other
                  |none)          #IMPLIED
  xlink:actuate   (onLoad
                  |onRequest
                  |other
                  |none)          #IMPLIED
  ...>

Anwendungen, denen Elemente vom Typ arc in Link-Bank-Listen begegnen, müssen die Verhaltensattribute behandeln, als wenn sie als show="none" und actuate="onLoad" spezifiziert wären, selbst wenn andere Werte angegeben waren.


5.6.1 Das Attribut show

Das Attribut show (anzeigen) wird benutzt, um die beabsichtigte Darstellung der End-Ressource bei Traversierung von der Start-Ressource aus festzulegen.

Beschränkung: Werte für show

Wird für ein show-Attribut ein Wert angegeben, so muss es einer der Werte »new«, »replace«, »embed«, »other« oder »none« sein.

Konforme XLink-Anwendungen sollten für show-Werte die folgende Behandlung vornehmen:

»new« (neu)

Eine Anwendung, die zur End-Ressource traversiert, sollte diese in einem neuen Fenster, Frame, Pane oder anderen relevanten Präsentationskontext laden. Dies ähnelt der durch das folgende HTML-Fragment erzielten Wirkung:

<A HREF="http://www.example.org" target="_blank">...</A>
»replace« (ersetzen)

Eine Anwendung, die zur End-Ressource traversiert, sollte diese im selben Fenster, Frame, Pane oder einen anderen relevanten Präsentationskontext laden, in dem die Start-Ressource geladen wurde. Dies ähnelt der durch das folgende HTML-Fragment erzielten Wirkung:

<A HREF="http://www.example.org" target="_self">...</A>
»embed« (einbetten)

Eine Anwendung, die zur End-Ressource traversiert, sollte ihre Darstellung anstelle der Darstellung der Start-Ressource laden. Dies etspricht der durch das folgende HTML-Fragment erzielten Wirkung:

<IMG SRC="http://www.example.org/smiley.gif" ALT=":-)">

Die Darstellung der Start-Ressource besteht typischerweise nicht aus einem gesamten Dokument; es wäre nur dann das gesamte Dokument, wenn das Wurzelelement des Dokuments ein einfacher Link ist. Einbettung hat also typischerweise eine vom Ersetzen verschiedene Wirkung.

Genau wie beim HTML-Element IMG betrifft die Einbettung nur die Darstellung der betreffenden Ressource; sie schreibt keine dauerhafte Umwandlung der Start-Ressource vor. Anders ausgedrückt wird bei Bearbeitung eines eingebetteten XLink das Ergebnis der Gestaltung der End-Ressource in das Ergebnis der Gestaltung der einbettenden Ressource eingefügt. Im Gegensatz dazu wird bei der Auflösung eines Konstrukts wie z.B. eines XInclude-Elements [XInclude] das ursprüngliche XML tatsächlich umgewandelt, so dass es den referenzierten Inhalt aufnimmt.

Das Verhalten konformer XLink-Anwendungen beim Einbetten XML-basierter ([IETF RFC 2376] oder [IETF I-D XMT]) End-Ressourcen ist in dieser Version der Spezifikation nicht definiert.

Die Darstellung eingebetteter Ressourcen ist abhängig von der Anwendung.

»other« (sonstiges)

Das Verhalten einer Anwendung, die zur End-Ressource traversiert, wird durch diese Spezifikation nicht eingeschränkt. Die Anwendung sollte nach weiterem im Link vorhandenen Markup suchen, um das angemessene Verhalten zu ermitteln.

»none« (keins)

Das Verhalten einer Anwendung, die zur End-Ressource traversiert, wird durch diese Spezifikation nicht eingeschränkt. Es ist kein weiteres Markup vorhanden, das der Anwendung helfen könnte, das angemessene Verhalten zu ermitteln.

Wenn die Start- oder End-Ressource aus mehreren nicht zusammenhängenden Orten besteht, wie z.B. eine Folge von String-Bereichen an verschiedenen Orten in der Ressource, so ist das Anwendungsverhalten nicht eingeschränkt. (Siehe [XPTR] für weitere Informationen zur Selektion von Teilen von XML-Dokumenten.)

Anmerkung:

Zum möglichen Anwendungsverhalten bei nicht zusammenhängenden End-Ressourcen könnte zählen: die Hervorhebung jedes Ortes, die Darstellung einer Dialogbox, die dem Leser die Auswahl zwischen den Orten erlaubt, als wenn es sich um getrennte Kanten zu jedem einzelnen Ort handelte, die Konkatenation der Inhalte aller Orte zwecks Darstellung und so weiter. Zum Anwendungsverhalten bei nicht zusamenhängenden Start-Ressourcen könnte die Konkatenation und Darstellung als eine Einheit gehören oder die Erzeugung einer Kante von jedem zusammenhängenden Teil aus.


5.6.2 Das Attribut actuate

The Attribut actuate (auslösen) wird benutzt, um das beabsichtigte zeitliche Verhalten der Traversierung von der Start-Ressource zur End-Ressource mitzuteilen.

Beschränkung: Werte für actuate

Wird für ein actuate-Attribut ein Wert angegeben, so muss es einer der Werte »onLoad«, »onRequest« , »other« oder »none« sein.

Konforme XLink-Anwendungen sollten für actuate-Werte die folgende Behandlung anwenden:

»onLoad« (beim Laden)

Eine Anwendung sollte sofort beim Laden der Start-Ressource zur End-Ressource traversieren. Dies entspricht der Wirkung, die typischerweise durch das folgende HTML-Fragment erzeugt wird, wenn der Browser in der Lage ist, Bilder darzustellen:

<IMG SRC="http://www.example.org/smiley.gif" ALT=":-)">

Enthält dieselbe Ressource mehrere Kanten, deren Verhalten auf show="replace" actuate="onLoad" gesetzt ist, wird das Anwendungsverhalten durch XLink nicht eingeschränkt.

»onRequest« (auf Anfrage)

Eine Anwendung sollte nur von der Start- zur End-Ressource traversieren, wenn nach dem Laden ein zum Zweck der Traversierung ausgelöstes Ereignis auftritt. Ein Beispiel für ein solches Ereignis könnte sein, dass der Benutzer auf die Darstellung der Start-Ressource klickt, oder dass ein Software-Modul einen Countdown beendet, der einer Umleitung vorausgeht.

»other« (sonstige)

Das Verhalten einer Anwendung, die zur End-Ressource traversiert, wird durch diese Spezifikation nicht eingeschränkt. Die Anwendung sollte nach weiterem im Link vorhandenen Markup suchen, um das angemessene Verhalten zu ermitteln.

»none« (keins)

Das Verhalten einer Anwendung, die zur End-Ressource traversiert, wird durch diese Spezifikation nicht eingeschränkt. Es ist kein weiterer Markup vorhanden, der der Anwendung helfen könnte, das angemessene Verhalten zu ermitteln.


5.7 Traversierungsattribute (label, from und to)

Die Traversierungsattribute sind label (Etikett), from (von) und to (nach). Das Attribut label darf auf Elementen des Typs resource und locator benutzt werden. Die Attribute from und to dürfen auf Elementen des Typs arc benutzt werden.

Beschränkung: Werte für label, from und to

Der Wert eines label-, from- oder to-Attributs muss ein NCName sein. Ist ein Wert für ein from- oder to-Attribut angegeben, so muss dies derselbe Wert wie der eines entsprechenden label-Attributs eines Elements vom Typ locator oder resource sein, das als direktes Kind in demselben Element vom Typ extended auftritt wie das Element vom Typ arc.


A Referenzen


A.1 Normative Referenzen

IETF I-D XMT
XML Media Types. Makoto, M., St. Laurent, S. and D. Kohn, editors. Internet Engineering Task Force, 2001. (Siehe http://www.ietf.org/rfc/rfc3023.txt)
IETF RFC 2396
IETF (Internet Engineering Task Force).RFC 2396: Uniform Resource Identifiers. 1995. (Siehe http://www.ietf.org/rfc/rfc2396.txt)
IETF RFC 2279
RFC 2279: UTF-8, a transformation format of ISO 10646. Internet Engineering Task Force, 1998. (Siehe http://www.ietf.org/rfc/rfc2279.txt)
IETF RFC 2376
RFC 2376: XML Media Types. Internet Engineering Task Force, 1998. (Siehe http://www.ietf.org/rfc/rfc2376.txt)
IETF RFC 2732
RFC 2732: Format for Literal IPv6 Addresses in URL's. Internet Engineering Task Force, 1999. (Siehe http://www.ietf.org/rfc/rfc2732.txt)
XML
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, and Eve Maler, editors. Extensible Markup Language (XML) 1.0 (Second Edition). World Wide Web Consortium, 2000. (Siehe http://www.edition-w3c.de/TR/2000/REC-xml-20001006)
IETF RFC 2119
S. Bradner, editor. Key words for use in RFCs to Indicate Requirement Levels. March 1997. (Siehe http://www.ietf.org/rfc/rfc2119.txt)
XML Base
Jonathan Marsh, editor. XML Base (XBase) . World Wide Web Consortium, 1999. (Siehe http://www.edition-w3c.de/TR/2001/REC-xmlbase-20010627/)
XML Names
Tim Bray, Dave Hollander, and Andrew Layman, editors. Namespaces in XML. World Wide Web Consortium, 1999. (Siehe http://www.edition-w3c.de/TR/1999/REC-xml-names-19990114/)

A.2 Nicht normative Referenzen

CHUM
Steven J. DeRose and David G. Durand. 1995. "The TEI Hypertext Guidelines." In Computing and the Humanities 29(3). Reprinted in Text Encoding Initiative: Background and Context, ed. Nancy Ide and Jean Ronis, ISBN 0-7923-3704-2.
Dexter
Halasz, Frank. 1994. »The Dexter Hypertext Reference Model.« In Communications of the Association for Computing Machinery 37 (2), February 1994: 30-39.
FRESS
Steven J. DeRose and Andries van Dam. 1999. »Document structure in the FRESS Hypertext System.« Markup Languages 1 (1) Winter. Cambridge: MIT Press: 7-32. (See also http://www.stg.brown.edu/~sjd/fress.html for more information.)
HTML
HTML 4.01 Specification. World Wide Web Consortium, 1999. (Siehe http://www.edition-w3c.de/TR/1999/REC-html401-19991224/)
Intermedia
Yankelovich, Nicole, Bernard J. Haan, Norman K. Meyrowitz, and Steven M. Drucker. 1988. »Intermedia: The Concept and the Construction of a Seamless Information Environment.« IEEE Computer 21 (January, 1988): 81-96.
ISO/IEC 10744
ISO (International Organization for Standardization). ISO/IEC 10744-1992 (E). Information technology-Hypermedia/Time-based Structuring Language (HyTime). [Geneva]: International Organization for Standardization, 1992. Extended Facilities Annex. [Geneva]: International Organization for Standardization, 1996. (Siehe http://www.y12.doe.gov/sgml/wg8/document/1920.htm)
MicroCosm
Hall, Wendy, Hugh Davis, and Gerard Hutchings. 1996. Rethinking Hypermedia: The Microcosm Approach. Boston: Kluwer Academic Publishers. ISBN 0-7923-9679-0.
OHS
van Ossenbruggen, Jacco, Anton Eliëns and Lloyd Rutledge. »The Role of XML in Open Hypermedia Systems.« Position paper for the 4th Workshop on Open Hypermedia Systems, ACM Hypertext '98. (Siehe http://aue.auc.dk/~kock/OHS-HT98/Papers/ossenbruggen.html)
RDF
Ora Lassila and Ralph Swick, editors. Resource Description Framework (RDF) Model and Syntax Specification. World Wide Web Consortium, 1999. (Siehe http://www.edition-w3c.de/TR/1999/REC-rdf-syntax-19990222/)
TEI
C. M. Sperberg-McQueen and Lou Burnard, editors. Guidelines for Electronic Text Encoding and Interchange. Association for Computers and the Humanities (ACH), Association for Computational Linguistics (ACL), and Association for Literary and Linguistic Computing (ALLC). Chicago, Oxford: Text Encoding Initiative, 1994.
XIS
John Cowan and Richard Tobin, editors. XML Information Set. World Wide Web Consortium, 2001. (Siehe http://www.edition-w3c.de/TR/2001/CR-xml-infoset-20010514/)
XLinkToRDF
Ron Daniel, editor. Harvesting RDF Statements from XLinks. World Wide Web Consortium, 2000. (Siehe http://www.edition-w3c.de/TR/2000/NOTE-xlink2rdf-20000929/)
XLinkNaming
Eve Maler, Daniel Veillard, and Henry S. Thompson, editors. XLink Markup Name Control. World Wide Web Consortium, 2000. (Siehe http://www.edition-w3c.de/TR/2000/NOTE-xlink-naming-20001220/)
XInclude
Jonathan Marsh and David Orchard, editors. XML Inclusions (XInclude) Version 1.0. World Wide Web Consortium, 2000. (Siehe http://www.edition-w3c.de/TR/2001/WD-xinclude-20010516/)
XLREQ
Steven DeRose, editor. XML XLink Requirements Version 1.0. World Wide Web Consortium, 1999. (Siehe http://www.edition-w3c.de/TR/1999/NOTE-xlink-req-19990224/)
XLDP
Eve Maler and Steve DeRose, editors. XML Linking Language (XLink) Design Principles. World Wide Web Consortium, 1998. (Siehe http://www.edition-w3c.de/TR/1998/NOTE-xlink-principles-19980303)
XPTR
Ron Daniel, Steve DeRose, and Eve Maler, editors. XML Pointer Language (XPointer) V1.0. World Wide Web Consortium, 1998. (Siehe http://www.edition-w3c.de/TR/2001/WD-xptr-20010108/)

B Beispiel-DTD (nicht normativ)

Die folgende DTD macht (zum Zwecke der Diskussion) alle XLink-Konstrukte ungültig, für die diese Spezifikation kein Verhalten spezifiziert. Sie wird an dieser Stelle als Hilfe für Anwendungsentwickler angegeben; sie hat keinen normativen Status.

Die folgenden Annahmen gelten für diese DTD:

Andere Annahmen und Bedingungen erscheinen als Kommentare in der DTD.

<!ELEMENT simple ANY> 
<!ATTLIST simple 
   xlink:type      (simple)        #FIXED "simple" 
   xlink:href      CDATA           #IMPLIED 
   xlink:role      CDATA           #IMPLIED 
   xlink:arcrole   CDATA           #IMPLIED 
   xlink:title     CDATA           #IMPLIED 
   xlink:show      (new
                   |replace
                   |embed
                   |other
                   |none)          #IMPLIED
   xlink:actuate   (onLoad
                   |onRequest
                   |other
                   |none)          #IMPLIED> 

<!ELEMENT extended ((title|resource|locator|arc)*)> 
<!ATTLIST extended 
   xmlns:xlink     CDATA           #FIXED "http://www.w3.org/1999/xlink"
   xlink:type      (extended)      #FIXED "extended"
   xlink:role      CDATA           #IMPLIED
   xlink:title     CDATA           #IMPLIED>

<!ELEMENT title ANY> 
<!-- xml:lang ist nicht erforderlich, liefert aber die Hauptmotivation
      für Titel-Elemente zusätzlich zu Attributen und wird daher hier
      aus praktischen Gründen bereitgestellt. --> 
<!ATTLIST title 
   xlink:type      (title)         #FIXED "title"
   xml:lang        CDATA           #IMPLIED>

<!ELEMENT resource ANY> 
<!ATTLIST resource 
   xlink:type      (resource)      #FIXED "resource"
   xlink:role      CDATA           #IMPLIED
   xlink:title     CDATA           #IMPLIED
   xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT locator (title*)> 
<!-- Das Attribut label ist nicht erforderlich,
     aber Adressangaben haben keine besondere XLink-Funktion,
     wenn sie nicht benannt sind. --> 
<!ATTLIST locator 
   xlink:type      (locator)       #FIXED "locator"
   xlink:href      CDATA           #REQUIRED
   xlink:role      CDATA           #IMPLIED
   xlink:title     CDATA           #IMPLIED
   xlink:label     NMTOKEN         #IMPLIED>

<!ELEMENT arc (title*)> 
<!-- Die Attribute from und to haben vordefiniertes
     Verhalten, wenn Werte fehlen. --> 
<!ATTLIST arc 
   xlink:type      (arc)           #FIXED "arc"
   xlink:arcrole   CDATA           #IMPLIED
   xlink:title     CDATA           #IMPLIED
   xlink:show      (new
                   |replace
                   |embed
                   |other
                   |none)          #IMPLIED
   xlink:actuate   (onLoad
                   |onRequest
                   |other
                   |none)          #IMPLIED
   xlink:from      NMTOKEN         #IMPLIED
   xlink:to        NMTOKEN         #IMPLIED>
    

C Mitglieder der Arbeitsgruppe und Danksagung (nicht normativ)

Diese Spezifikation wurde in der XML Linking Working Group erstellt, wobei folgende Mitglieder bei der Fertigstellung dieser Spezifikation noch aktiv waren:

Die Herausgeber wünschen die substanziellen Beiträge von Tim Bray zu würdigen, der früher als Mitherausgeber und Mitvorsitzender fungierte, und von Ben Trafford, der früher als Mitherausgeber fungierte. Wir möchten auch wichtige Beiträge von Gabe Beged-Dov würdigen, der das XArc-Proposal schrieb. Schließlich möchten wir der XML Linking Interest Group and Working Group für ihre Unterstützung und ihren Input danken, und Henry Thompson, dafür, dass er half, der Gruppe vorzusitzen, und dafür, dass er in den letzten Monaten vor dieser Publikation die Rolle des Mitarbeiterkontakts übernahm.

Stichwortverzeichnis

Stichwort Art des Vorkommens
ausgehende Kante Definition
Einfacher Link Definition
eingehende Kante Definition
End-Ressource Definition
entfernte Ressource Definition
erweiterter Link Definition
Hyperlink Definition
Kante Definition
Link Definition
Link-Bank Definition
Link-Element Definition
lokale Ressource Definition
muss, darf usw. Definition
Ressource Definition
Start-Ressource Definition
Teilnehmende Ressource Definition
Third-Party-Kante Definition
Traversierung Definition