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.
Copyright © 2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use, and software licensing rules apply.
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.
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.
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)
A Referenzen
A.1 Normative Referenzen
A.2
Nicht normative Referenzen
B
Beispiel-DTD (nicht normativ)
C
Mitglieder der Arbeitsgruppe und Danksagung
(nicht normativ)
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,
Link-Beziehungen zwischen mehr als zwei Ressourcen herzustellen,
Metadaten mit einem Link zu assoziieren,
Links auszudrücken, die sich an einem Ort außerhalb der verlinkten Ressourcen befinden.
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:
Der Hyperlink benutzt URIs als Adressangabe-Technologie.
Der Hyperlink wird an einem seiner zwei Enden beschrieben.
Der Hyperlink identifiziert das andere Ende (obwohl ein Server große Freiheit beim Auffinden oder dynamischen Erzeugen dieses Ziels hat).
Benutzer können die Traversierung nur an dem Ende auslösen, an dem der Link beschrieben wird. Die Traversierung führt zum anderen Ende.
Die Wirkung des Hyperlinks auf Fenster, Frames,
History-Listen, verwendete Stylesheets und so weiter wird nur durch
User Agents, nicht aber durch den Hyperlink selbst bestimmt.
Zum Beispiel ersetzt die Traversierung eines
HTML-A
-Link normalerweise die aktuelle Ansicht,
eventuell mit einer Benutzeroption, ein neues Fenster
zu öffnen.
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.
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.
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.
[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.
[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«.
[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.]
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.]
XLink-Verarbeitung basiert auf [XML], [XML Names], [XML Base] und [IETF RFC 2396] (mit den Aktualisierungen aus [IETF RFC 2732]).
Ein XML-Element ist XLink-konform, wenn:
es ein Attribut
type
aus dem XLink-Namensraum hat, dessen Wert
entweder
»simple«,
»extended«,
»locator«,
»arc«,
»resource«,
»title«
oder
»none«
ist und
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.
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:
sie die in dieser Spezifikation aufgestellten zwingenden Bedingungen für Anwendungen erfüllt (»muss«) und
sie alle optionalen Bedingungen (»sollte« und »darf«), die sie zu erfüllen wünscht, auf die vorgeschriebene Weise erfüllt und
sie Markup-Konformitätstests entsprechend aller in dieser Spezifikation angegebenen Konformitätsbeschränkungen durchführt.
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.
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" ... />
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 |
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.
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>
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.
XLink bietet zwei Arten von 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 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.
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.
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.
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).
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>
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.
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>
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.
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" />
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.
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.
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" />
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.
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>
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.
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>
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.
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.
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.
type
)
Das Attribut, das XLink-Elementtypen identifiziert, ist 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.
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>
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:
Jedes nicht erlaubte Zeichen wird nach UTF-8 [IETF RFC 2279] in ein oder mehrere Bytes konvertiert.
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).
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].
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 ...>
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.
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 ...>
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.
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.
show
Das Attribut show
(anzeigen) wird benutzt, um die
beabsichtigte Darstellung der End-Ressource bei Traversierung
von der Start-Ressource aus festzulegen.
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:
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>
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>
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.
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.
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.
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:
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.
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.
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.
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.
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
.
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:
Nur Konstrukte mit XLink-definiertem Verhalten sind erlaubt.
Keine »fremden« XML-Vokabulare sind hineingemischt, da DTDs nicht gut mit Namensräumen funktionieren.
Die Benutzung von ANY bedeutet, dass im Element üblicherweise Inhalt bereitgestellt wird, der von XLink auf irgendeine Weise verwendet wird.
Die Verwendung des Konstrukts (title*)
bedeutet, dass sämtlicher angegebene Nicht-Titel-Inhalt
keine XLink-definierte Verwendung hat.
Elemente sind nach den XLink-Elementtypen benannt, die sie repräsentieren.
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>
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.
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 |