Dit document is een Nederlandse vertaling van een Engelstalig document (http://www.w3.org/TR/xlink/).

Deze vertaling is gemaakt door Andy Camps, maar kan nog enkele fouten bevatten. In geval van twijfel verwijzen wij naar de officiële Engelstalige versie.

Engelse versie:
http://www.w3.org/TR/xlink
Deze versie:
http://www.playgarden.com/w3c/TR/xlink/xlink.html
(zip archief van HTML)
Vertaler:
Andy Camps <andy.camps@playgarden.com>
Auteursrecht:
Copyright © 1999 W3C ( MIT, INRIA, Keio). Alle rechten voorbehouden. W3C-regels betreffende aansprakelijkheid, handelsmerk, documentgebruik en softwarelicentiëring zijn van toepassing.

W3C

XML Linking Taal (XLink) Versie 1.0

W3C Aanbeveling 27 Juni 2001

Deze versie:
http://www.w3.org/TR/2000/REC-xlink-20010627/(beschikbaar in HTML, XML)
Laatste versie:
http://www.w3.org/TR/xlink/
Vorige versies:
http://www.w3.org/TR/2000/PR-xlink-20001220/
Editors:
Steve DeRose, Brown University Scholarly Technology Group
Eve Maler, Sun Microsystems
David Orchard, Jamcracker
Vertaling:
Andy Camps, Playgarden

Samenvatting

Deze specificatie definieert de XML Linking Taal (XLink), welke toelaat dat elementen ingevoegd worden in XML documenten om links tussen bronnen te maken en te omschrijven. Het gebruikt XML syntax om structuren te maken die links kunnen omschrijven op vergelijkbare manier als de eenvoudige unidirectionele hyperlinks van HTML van vandaag, maar ook gecompliceerde links.

Status van dit Document

Dit document is nagekeken door W3C Leden en andere geïntereseerde partijen en is door de Directeur bekrachtigd als een W3C Aanbeveling. Het is een stabiel document en kan gebruikt worden als referentiemateriaal of geciteerd worden als een normatieve referentie vanuit een ander document. De rol van W3C in het maken van deze Aanbeveling is de aandacht trekken op de specificatie en de verspreiding ervan promoten. Dit verhoogt de functionaliteit en interoperabiliteit van het Web.

Raadpleeg voor informatie over de XPointer taal die kan gebruikt worden met XLink [XPTR].

Dit document is gemaakt door de W3C XML Linking Working Group als dele van de XML Activiteit in het W3C Architecture Domain. Raadpleeg voor achtergrond over dit werk de XML Activity Statement.

Meldt mogelijke fouten in dit document aan de publieke email lijst www-xml-linking-comments@w3.org (archief op http://lists.w3.org/Archives/Public/www-xml-linking-comments/). Alle bevestigde fouten zullen gedocumenteerd worden in een lijst van errata beschikbaar op http://www.w3.org/2001/06/xlink-errata.

Meldt mogelijke fouten in de vertaling van dit document aan andy.camps@playgarden.com. Correcties worden dan zo snel mogelijk aangebracht.

De Engelse versie van deze specificatie is de enige normatieve versie. Informatie over vertalingen van dit document is beschikbaar op http://www.w3.org/2001/06/xlink-translations.

Raadpleeg [XLDP] voor aanvullende achtergrondinformatie over de ontwerpprincipes van XLink en [XLREQ] voor de normatieve XLink vereisten die dit document tracht na te komen. XLink ondersteunt niet alle HTML linking constructies zoals deze bestaan; raadpleeg [XLinkNaming] voor een bespreking van deze situatie.

Een lijst van huidige W3C Aanbevelingen en andere technische documenten kan gevonden worden op http://www.w3.org/TR/.

Inhoudstabel

1 Inleiding
    1.1 Oorsprong en Doelen
2 XLink Concepten
    2.1 Links en Bronnen
    2.2 Arcs (Bogen), Traversal (Doortocht) en Behavior (Gedrag)
    2.3 Bronnen in Relatie tot de Fysieke Locatie van een Linking Element
3 XLink Verwerking en Conformiteit
    3.1 Verwerkingsafhankelijkheden
    3.2 Opmaakconformiteit
    3.3 Toepassing Conformiteit
4 XLink Opmaak Ontwerp
    4.1 XLink Attribuut Gebruikspatronen
    4.2 XLink Element Type Relaties
    4.3 Attribuutwaarde Standaardisering
    4.4 Integratie van XLink Gebruik met andere Opmaak
    4.5 Gebruik van XLink met Erfelijke Opmaak
5 XLink Elementen en Attributen
    5.1 Extended Links (extended-Type Element)
        5.1.1 Lokale Bronnen voor een Extended Link (resource-Type Element)
        5.1.2 Afgelegen (remote) Bronnen voor een Extended Link (locator-Type Element)
        5.1.3 Traversal Regels voor een Extended Link (arc-Type Element)
        5.1.4 Titels voor Extended Links, Locators en Arcs (title-Type Element)
        5.1.5 Bepalen van Linkbases (Speciale Arc Rol)
    5.2 Simple Links (simple-Type Element)
    5.3 XLink Element Type Attribuut (type)
    5.4 Locator Attribuut (href)
    5.5 Semantische Attributen (role, arcrole en title)
    5.6 Behavior Attributen (show en actuate)
        5.6.1 show Attribuut
        5.6.2 actuate Attribuut
    5.7 Traversal Attributen (label, from en to)

Appendixen

A Referenties
    A.1 Normatieve Referenties
    A.2 Niet-Normatieve Referenties
B Voorbeeld DTD (Niet-Normatief)
C Working Group Leden en Dankwoord (Niet-Normatief)


1 Inleiding

Deze specificatie definieert de XML Linking Taal (XLink), welke toemaat dat elementen ingevoegd worden in XML documenten om zo links tussen bronnen te maken en te omschrijven.

XLink biedt een kader voor het maken van basis unidirectionele links en complexere linking structuren. Het laat XML documenten toe om:

Een belangrijke toepassing van XLink is te vinden in hypermedia systemen die hyperlinks hebben. Een eenvoudig geval van een hyperlink is een HTML A element, welke deze eigenschappen heeft:

Deze set van kenmerken is krachtig, maar het model dat er onderligt beperkt het bereik van mogelijke hyperlink functionaliteit. Het model dat gedefinieerd wordt in deze specificatie heeft raakvlakken met HTML in het gebruik van URI technologie, maar gaat verder dan HTML in het bieden van eigenschappen, vroeger enkel beschikbaar in dedicated hypermedia systemen, die hyperlinking schaleerbaarder en flexibeler maken. Samen met het bieden van linking data structuren, biedt XLink een minimaal link gedragsmodel; hoger-level toepassingen die steunen op XLink zullen vaak alternatieve of geraffineerde weergave- en verwerkingsgedrag specificeren.

Geïntegreerd gedrag van gespecialiseerde links die gebruikt worden in andere technische domeinen, zoals externe sleutels in relationele databases en referentiewaarden in programmeertalen, vallen buiten de draagwijdte van deze specificatie.

1.1 Oorsprong en Doelen

Het ontwerp van XLink ging samen met de kennis van vastgestelde hypermedia systemen en standaarden. De volgende standaarden zijn bijzonder invloedrijk geweest:

  • HTML [HTML]: Definieert verschillende element types die links beschrijven.

  • HyTime [ISO/IEC 10744]: Definieert inline en inbound en third-party link structuren en sommige semantieke eigenschappen waaronder doorgangscontrole en presentatie van objects.

  • Text Encoding Initiative Guidelines [TEI]: Biedt structuren om links te maken, samenstellen van (aggregate) objecten en link verzamelingen.

Veel andere linking systemen werden eveneens nagekeken bij het ontwerp van XLink, in het bijzonder [Dexter], [FRESS], [OHS], [MicroCosm] en [Intermedia].

Raadpleeg het XLink Requirements (Vereisten) Document [XLREQ] voor een gedetailleerde uitleg van vereisten voor het ontwerp van XLink.

2 XLink Concepten

Dit deel omschrijft de begrippen en concepten die essentieel zijn om XLink te begrijpen, zonder bespreking van de syntax gebruikt om XLink constructies te maken. Een aantal aanvullende begrippen worden geïntroduceerd in de rest van deze specificatie.

2.1 Links en Bronnen

[Definitie: Een XLink link is een expliciete relatie tussen bronnen of delen van bronnen.] [Definitie: Het wordt expliciet gemaakt door een XLink linking element, welk een XLink-conform XML element is dat het bestaan van een link verklaart.] Er zijn zes XLink elementen; slechts twee hiervan worden beschouwd als linking elementen. De anderen bieden variatiestukken van informatie die de kenmerken van een link omschrijven. (Het begrip "link" zoals gebruikt in deze specificatie verwijst enkel naar een XLink link, hoewel niets verbiedt dat niet-XLink constructies dienen als links.)

Het begrip bronnen is universeel aan het World Wide Web. [Definitie: Zoals besproken in [IETF RFC 2396], is een bron elke adresseerbare eenheid van informatie of dienst.] Voorbeelden zijn bestanden, figuren, documenten, programma's en resultaten van zoekopdrachten. Het middel dat gebruikt wordt om een bron te adresseren is een URI (Uniform Resource Identifier) verwijzing (verder omschreven in 5.4 Locator Attribuut (href)). Het is mogelijk om een deel van een bron te adresseren. Als bijvoorbeeld de hele bron een XML document is, kan een deel van die bron een bepaald element binnen het document zijn. Een link hiernaar volgen kan bijvoorbeeld resulteren in oplichten van dat element of scrollen tot dat punt in het document.

[Definitie: Wanneer een link een set van bronnen associeert, wordt gezegd dat deze bronnen deelnemen in de link.] Hoewel XLink links moeten staan in XML documenten, zijn ze geschikt om alle soorten bronnen te linken, niet enkel XML-encoded bronnen.

Eén van de algemene gebruiken van XLink is het maken van hyperlinks. [Definitie: Een hyperlink is een link die primair bedoeld is voor presentatie aan een menselijke gebruiker.] Er is niets in het ontwerp van XLink dat voorkomt dat het gebruikt wordt met links die enkel bedoeld zijn voor gebruik door computers.

2.2 Arcs, Traversal en Behavior

[Definitie: Gebruiken of volgen van een link voor eender welk doel wordt traversal genoemd.] Hoewel sommige soorten links een willekeurig aantal bronnen kunnen associëren, gaat traversal altijd over een paar bronnen (of delen ervan); [Definitie: de bron waarvan traversal begonnen is wordt de startbron genoemd] en [Definitie: de bestemming is de eindbron]. Merk op dat de term "bron" op deze manier gebruikt ten alle tijde kan gelden voor een deel van een bron, niet een hele bron.

[Definitie: Informatie over hoe door een paar van bronnen te trekken, inclusief de richting van traversal en mogelijk ook toepassingsgedragsinformatie, wordt een arc genoemd]. Als twee arcs in een link het zelfde paar van bronnen specificeren, maar ze wisselen van plaats als start en eindbronnen, is de link multidirectioneel, hetgeen niet hetzelfde is als alleen maar "terug gaan" na het doorlopen van een link.

2.3 Bronnen in Relatie tot de Fysieke Locatie van een Linking Element

[Definitie: Een lokale bron is een XML element dat deelneemt in een link door de deugd te hebben om als ouder (parent) een linking element te hebben of er zelf één te zijn]. [Definitie: Elke bron of deel van een bron die deelneemt in een link door de deugt te hebben geadresseerd te worden met een URI verwijzing wordt beschouwd als een afgelegen bron, zelf als het gaat om het zelfde XML document als de link, of zelfs binnen hetzelfde linking element.] Anders gezegd, een lokale bron wordt gespecificeerd "door waarde (by value)" en een afgelegen bron wordt gespecificeerd "door verwijzing (by reference)."

[Definitie: Een arc die een lokale startbron en een afgelegen eindbron heeft gaat outbound, hetgeen wil zeggen weg van het linking element.] (Voorbeelden van links met zon een arc zijn het HTML A element, HyTime "clinks" en Text Encoding Initiative XREF elementen.) [Definitie: Als de eindbron van een arc lokaal is maar de startbron is afgelegen, dan gaat de arc inbound.] [Definitie: Als noch de startbron, noch de eindbron lokaal is, dan is de arc een third-party arc.] Hoewel het niet vereist is, specificeert elke link typisch één van deze soorten arc doorgangen en moet dus ingedeeld worden als een inbound, outbound of third-party link.

Om een link te maken die afkomstig is van een bron waar je geen schrijfrechten van hebt (of wilt gebruiken op dit ogenblik) of van een bron die geen manier biedt om linking constructies op te nemen, is het nodig om een inbound of een third-party arc te gebruiken. Als zulke arcs gebruikt worden, zijn de voorwaarden voor de ontdekking van de link belangrijker dan voor outbound arcs. [Definitie: Documenten die reeksen van inbound en third-party links bevatten worden link databases of linkbases genoemd.]

3 XLink Verwerking en Conformiteit

Dit deel geeft details over de verwerking en conformiteitsvereisten van XLink toepassingen en XLink opmaak.

[Definitie: De sleutelwoorden moet, moet niet, vereist, zal, zal niet, zou, zou niet, aanbevolen, kan en optioneel in deze specificatie moeten geïterpreteerd worden zoals omschreven in [IETF RFC 2119].]

3.1 Verwerkingsafhankelijkheden

XLink verwerking hangt af van [XML], [XML Names], [XML Base] en [IETF RFC 2396] (zoals geupdated door [IETF RFC 2732]).

3.2 Opmaakconformiteit

Een XML element is conform aan XLink als:

  1. het een type attribuut heeft uit de XLink namespace waarvan de waarde één van de volgende is: "simple", "extended", "locator", "arc", "resource", "title" of "none", en

  2. het de conformiteitsbeperkingenopgelegd door het gekozen XLink element type naleeft zoals voorgeschreven in deze specificatie.

Deze specificatie legt geen bijzondere beperkingen op DTD's op; conformiteit geldt enkel op elementen en attributen.

3.3 Toepassing Conformiteit

Een XLink toepassing is elke software module die well-formed XML documenten die XLink elementen en attributen bevat, of XML informatiesets [XIS] die informatie items en eigenschappen overeenkomstig aan XLink elementen en attributen interpreteren. (Dit document verijst naar elementen en attributen, maar alle specificaties hierin gelden ook tot hun informatieset equivalenten.) Zo een toepassing is conform als:

  1. het de verplichte voorwaarden voor toepassingen ("moet") uit deze specificatie naleeft, en

  2. voor elke optionele voorwaarde ("zou" en "kan") die het volgt, deze volgt op de voorgeschreven manier, en

  3. het opmaak conformiteit testen uitvoert volgens alle conformiteitseisen die voorkomen in deze specificatie.

4 XLink Opmaak Ontwerp

Dit deel omschrijft het ontwerp het ontwerp van de XLink opmaakwoordenschat.

Link opmaak moet op betrouwbare manier herkenbaar zijn door XLink toepassingen opdat het correct gevolgd (traversed) en behandeld kan worden. XLink gebruikt het mechanisme omschreven in de Namespaces in XML Aanbeveling [XML Names] om herkenning van de constructies in de XLink woordenschat te bekomen.

De XLink namespace gedefinieerd door deze specificatie heeft de volgende URI:

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

Zoals voorgeschreven door [XML Names] vereist het gebruik van XLink elementen en attributen de declaratie van de XLink namespace. De volgende declaratie maakt bijvoorbeeld de prefix xlink beschikbaar binnen het mijnElement element om de XLink namespace te vertegenwoordigen:

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

Opmerking:

De meeste code voorbeelden in deze specificatie geven geen XLink namespace declaratie. De xlink prefix wordt gebruikt om de declaratie aan te geven van de XLink namespace op elementen waarin de attribuut verschijnt (op het zelfde element dat de attribuut of een voorouder element draagt), of een XLink namespace declaratie in het voorbeeld aanwezig is of niet.

De namespace van XLink biedt globale attributen voor gebruik op elementen die in elke willekeurige namespace staan. De globale attributen zijn type, href, role, arcrole, title, show, actuate, label, from en to. Document makers gebruiken de XLink globale attributen om de elementen in hun eigen namespace te maken, of zelfs in een namespace die ze niet controleren, herkenbaar als XLink elementen. Het type attribuut geeft het XLink element type (simple, extended, locator, arc, resource of title) aan; het element type dicteert de XLink-opgelegde beperkingen die zo een element moet volgen en het gedrag van XLink toepassingen wanneer het element tegengekomen wordt.

Het volgende is een voorbeeld van een crossReference element van een niet-XLink namespace die XLink globale attributen heeft:

<mijn:crossReference
  xmlns:my="http://voorbeeld.com/"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xlink:type="simple"
  xlink:href="students.xml"
  xlink:role="http://www.voorbeeld.com/linkeigenschappen/studentlijst"
  xlink:title="Studentenlijst"
  xlink:show="new"
  xlink:actuate="onRequest">
Huidige lijst van studenten
</mijn:crossReference>

Gebruik van globale attributen vereist altijd het gebruik van namespace prefixes op de individuele attributen en het gebruik van het type attribuut op het element.

4.1 XLink Attribuut Gebruikspatronen

Hoewel de XLink attributen beschouwd worden globaal krachtens hun gebruik van het namespace mechanisme, hangt hun toegestane combinaties op elk XLink element sterk af van de waarde van het speciale type attribuut (raadpleeg 5.3 XLink Element Type Attribuut (type) voor meer informatie) voor het element waarop ze verschijnen. De conformiteit beperking geeft in deze specificatie in detail hun toegestane gebruikspatronen. Hierna volgt een samenvatting van de element types (kolommen) waarop de globale attributen (rijen) toegelaten zijn, met daarbij een indicatie of een waarde vereist (R) of optioneel (O) is:

simple extendedlocatorarcresource title
typeR RRRRR
href O R
role OOOO
arcrole OO
title OOOOO
show OO
actuate OO
label OO
from O
to O

(Raadpleeg ook B Voorbeeld DTD voor een niet-normatieve DTD die de toegestane patronen van attributen illustreert.)

Deze specificatie gebruikt de conventie "xxx-type element" om te verwijzen naar elementen die een benoemde set van beperkingen geassocieerd met een XLink element type moet volgen onafhankelijk van welke naam het element eigenlijk heeft. "locator-type element" zou verwijzen naar alle volgende elementen:

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

4.2 XLink Element Type Relaties

Verschillende XLink element types hebben speciale betekenis opgelegd door deze specificatie wanneer deze verschijnen als directe kinderen van andere XLink element types. Hierna volgt een samenvatting van de kind element types die een betekenisvolle rol spelen in bijzondere ouder element types. (Andere combinaties hebben geen XLink-opgelegde betekenis.)

Ouder typeBetekenisvolle kind types
simplenone
extended locator, arc, resource, title
locatortitle
arc title
resourcenone
titlenone

4.3 Attribuutwaarde Standaardisering

Gebruik van XLink brengt mogelijk met zich mee dat een groot aantal attributen voor levering van belangrijke link informatie gebruikt moet worden. In gevallen waar de waardes van de gewenste XLink attributen onveranderlijk zijn doorheen individuele gevallen van alle documenten van een bepaald type, kunnen attribuutwaarde standaarden (vast of niet) toegevoegd worden aan een DTD zodat de attributen niet fysiek moeten verschijnen op element start-tags. Als attribuutstandaarden bijvoorbeeld voorzien werden van de xmlns:xlink, xmlns:my, type, show en actuate attributen in het voorbeeld in de introductie tot 4 XLink Opmaak Ontwerp, zou het voorbeeld uitzien als volgt:

<mijn:crossReference
  xlink:href="students.xml"
  xlink:role="http://www.voorbeeld.com/linkeigenschappen/studentlijst"
  xlink:title="Studentlijst">
Huidige lijst van studenten
</mijn:crossReference>

Informatiesets die gemaakt zijn onder de controle van een DTD hebben alle attribuutwaarden ingevuld.

4.4 Integratie van XLink Gebruik met andere Opmaak

Deze specificatie definieert enkel attributen en attribuutwaarden in de XLink namespace. Er is geen beperking op het gebruik van niet-XLink attributen naast XLink attributen. Meer, de meeste XLink attributen zijn optioneel en de keuze van simple of extended link is aan de opmaakontwerper of documentmaker. Een DTD die XLink eigenschappen gebruikt moet niet de hele set van attributen van XLink gebruiken of declareren. Hoewel tot slot deze specificatie de minimale beperkingen op XLink opmaak identificeert, zijn DTD's die XLink gebruiken vrij om deze beperkingen te verstrengen. Het gebruik van XLink staat een geldig document niet vrij van conform te zijn aan de beperkingen uitgedrukt in zijn geldende DTD.

Hierna volgt een voorbeeld van een crossReference element met beide XLink en niet-XLink attributen:

<mijn:crossReference
  xmlns:my="http://voorbeeld.com/"
  mijn:lastEdited="2000-06-10"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xlink:type="simple"
  xlink:href="students.xml">
Huidige lijst van studenten
</mijn:crossReference>

4.5 Gebruik van XLink met Erfelijke Opmaak

Omdat de globale attributen van XLink het gebruik van namespace prefixes vereisen dienen niet-XLink-gebaseerde links in ervende documenten algemeen niet als conforme XLink constructies, zelfs als attribuutwaarde standaardisering gebruikt wordt. XHTML 1.0 heeft bijvoorbeeld een a element met een href attribuut, maar omdat het attribuut lokaal gekoppeld is aan het a element in de XHTML namespace, is het niet hetzelfde als een xlink:href globaal attribuut in de XLink namespace.

5 XLink Elementen en Attributen

XLink biedt twee soorten links:

Extended links

Extended links bieden volledige XLink functionaliteit zoals inbound en third-party arcs, maar ook links die verschillende deelnemende bronnen hebben. Hun structuur kan hierdoor behorlijk complex zijn, inclusief elementen voor verwijzing naar afgelegen bronnen, elementen voor bevatting van lokale bronnen, elementen voor specificatie van arc traversal regels en elementen voor specificatie van mens-leesbare bron en arc titels.

XLink definieert een manier om een extended link een speciale semantiek te geven om linkbases te vinden; op deze manier gebruikt helpt een extended link een XLink toepassing om andere links te verwerken.

Simple links

Simple links bieden verkorte syntax voor een algemene soort van link, een uitgaande link met exact twee deelnemende bronnen (waarin HTML-stijl A en IMG links gekatalogiseerd kunnen worden). Omdat simple links minder functionaliteit bieden dan extended links, hebben ze geen speciale interne structuur.

Hoewel simple links conceptueel een subset van extended links zijn, zijn ze syntactisch verschillend. Om bijvoorbeeld een simple link om te zetten in een extended link, zouden verschillende structurele wijzigingen nodig.

De volgende delen definiëren de XLink elementen en attributen.

5.1 Extended Links (extended-Type Element)

[Definitie: Een extended link is een link die een willekeurig aantal bronnen associeert. De deelnemende bronnen kunnen elke combinatie van afgelegen en lokale bronnen zijn.]

De enige soort link die in staat is om inbound en derden arcs te hebben is een extended link. Extended linking elementen worden typisch appart opgeslaan van de bronnen die ze associëren (bijvoorbeeld in volledig verschillende documenten). Extended links zijn dus belangrijk voor situaties waar de deelnemende bronnen read-only zijn, waar het te kostelijk is om ze te wijzigen en te updaten maar goedkoep om een individueel linking element aan te passen en te updaten, of waar de bronnen in een formaat staan met geen eigen ondersteuning voor embedded links (zoals veel multimedia formaten).

Het volgende diagram toont een extended link die vijf afgelegen bronnen associeert. Dit zou bijvoorbeeld informatie kunnen weergeven van de lessenreeks van een student: één bron is een omschrijving van de student, een andere is een omschrijving van de academische adviseur van de student, twee bronnen geven vakken waaraan die de student deelneemt en de laatste bron geeft een vak aan dat de student volgt.

Diagram van Out-of-Line Extended Link

Zonder de extended link zouden de bronnen volledig ongerelateerd kunnen zijn; ze zouden bijvoorbeeld in vijf verschillende documenten kunnen staan. De lijnen die afkomstog zijn van de extended link vertegenwoordigen de associatie die het maakt tussen de bronnen. Merk echter op dat de lijnen geen directionaliteit hebben. Directionaliteit wordt uitgedrukt met traversal regels; wanneer zulke regels niet voorzien worden, worden de bronnen ongeordend geassociateerd, zonder implicaties over bronnen en hoe individuele bronnen opgevraagd worden.

Het volgende diagram toont een extended link die vijf afgelegen bronnen en één lokale bron (een speciaal element binnen de het extended link element) associeert. Dit zou hetzelfde soort lessenpakket kunnen vertegenwoordigen als het bovenstaande voorbeeld, met het puntengemiddelde dat de student behaald heeft lokaal opgeslaan. De lijnen zijn opnieuw enkel associaties van de zes bronnen, zonder traversal richtingen of gedragingen verondersteld.

Diagram van Inline Extended Link

Het XLink element type voor extended links is elk element met een attribuut in de XLink namespace dat type genoemd wordt en een waarde "extended" heeft.

Het extended-type element kan een mengelmoes van de volgende elementen in elke volgorde bevatten. Dit is mogelijk samen met andere inhoud en opmaak:

  • locator-type elementen die de afeglegen bron adresseren die deelneemt in de link

  • arc-type elementen die traversal rules bieden tussen de deelnemende bronnen van de link

  • title-type elementen die door de mens leesbare labels voor de link bieden

  • resource-type elementen die lokale bronnen voorzien die deelnemen in de link

Het is niet verkeerd dat een extended-type element minder dan twee bronnen associeert. Als de link slechts één deelnemende bron heeft, of zelfs helemaal geen, is deze link eenvoudigweg ontraversable. Zo en link kan wel nog nuttig zijn om bijvoorbeeld eigenschappen te associëren met een bron via XLink attributen of om een plaatst te reserveren voor linkinformatie die uiteindelijk ingevuld zal worden.

Subelementen van het simple of het extended type eender waar binnen een parent extended-type element hebben geen XLink-gespecificeerde betekenis. Subelementen van het locator, het arc of het resource type die niet directe children van een extended-type element zijn hebben geen XLink-gespecificeerde betekenis.

Het extended-type element kan de semantische attributen role en title bevatten (raadpleeg 5.5 Semantische Attributen (role, arcrole en title)). Ze voorzien semantische informatie over de link als een geheel; het role attribuut geeft een eigenschap die de hele link heeft en het title attribuut geeft een door de mens-leesbare omschrijving van de volledige link. Als andere XLink attributen aanwezig zijn op het element, hebben ze geen XLink-gespecificeerde relatie tot de link. Als zowel een title attribuut als één of meer title-type elementen aanwezig zijn, hebben ze geen XLink-gespecificeerde relatie; een hogere-orde toepassing die steunt op XLink zal in dit geval waarschijnlijk een geschikte behandeling willen specificeren (bij voorbeeld voorrang).

Voorbeeld: Voorbeeld extended-Type Element Declaraties en Instance

Hierna volgt een niet-normatieve set van declaraties voor een extended-type element en zijn subelementen. Delen van dit voorbeeld worden hergebruikt doorheen deze specificatie. Merk op dat het type attribuut en sommige andere attributen een standaardwaarde krijgen in de DTD om de attributen die wijzigen per geval te benadrukken.

<!ELEMENT opleidingsdruk ((tooltip|persoon|cursus|gps|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 persoon EMPTY>
<!ATTLIST persoon
  xlink:type      (locator)       #FIXED "locator"
  xlink:href      CDATA           #REQUIRED
  xlink:role      CDATA           #IMPLIED
  xlink:title     CDATA           #IMPLIED
  xlink:label     NMTOKEN         #IMPLIED>

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

<!-- GPS = "gemiddelde puntenscore" -->
<!ELEMENT gps ANY>
<!ATTLIST gps
  xlink:type      (resource)      #FIXED "resource"
  xlink:role      CDATA           #FIXED "http://www.voorbeeld.com/linkeigenschappen/gps"
  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>

Hierna volgt hoe XML elementen die deze declaraties gebruiken kunnen uitzien.

<opleidingsdruk>

  <tooltip>Opleidingsdruk voor Pat Jones</tooltip>

  <persoon
    xlink:href="students/patjones62.xml"
    xlink:label="student62"
    xlink:role="http://www.voorbeeld.com/linkeigenschappen/student"
    xlink:title="Pat Jones" />

  <person
    xlink:href="profs/jaysmith7.xml"
    xlink:label="prof7"
    xlink:role="http://www.voorbeeld.com/linkeigenschappen/professor"
    xlink:title="Dr. Jay Smith" />
  <!-- meer afeglegen bronnen voor professors, assistenten, enz. -->

  <cursus
    xlink:href="cursussen/cs101.xml"
    xlink:label="CS-101"
    xlink:title="Computer Science 101" />
  <!-- meer afgelegen bronnen voor cursussen, seminaries, enz. -->

  <gps xlink:label="PatJonesGPS">3.5</gps>

  <go
    xlink:from="student62"
    xlink:to="PatJonesGPS"
    xlink:show="new"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones's GPS" />
  <go
    xlink:from="CS-101"
    xlink:arcrole="http://www.voorbeeld.com/linkeigenschappen/toehoorder"
    xlink:to="student62"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones, volgt de cursus" />
  <go
    xlink:from="student62"
    xlink:arcrole="http://www.voorbeeld.com/linkeigenschappen/adviseur"
    xlink:to="prof7"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Dr. Jay Smith, adviseur" />

</opleidingsdruk>

5.1.1 Lokale Bronnen voor een Extended Link (resource-Type Element)

Een extended link geeft aan dat deze lokale bronnen laat deelnemen met behulp van speciale subelementen die verschijnen in de extended link. Een volledig subelement, samen met de volledige inhoud ervan, vormt een lokale bron.

Het XLink element voor lokale bronnen is elk element in de XLink namespace met een attribuut type waarvan de waarde "resource" is.

Het resource-type element kan elke soort inhoud hebben; de inhoud die weergegeven wordt heeft geen XLink-gespecificeerde relatie met de link. Het is mogelijk dat een resource-type element geen inhoud heeft; in gevallen waar het dient als een startbron die verwachte wordt getraversed te worden op aanvraag. Interactieve XLink toepassingen zullen gewoonlijk een inhoud genereren om de gebruiker te laten starten met de traversal. Als een resource-type element iets anders dan een extended-type element als parent heeft, heeft het resource-type element geen XLink-gespecificeerde betekenis.

Het resource-type element kan de semantische attributen role en title (raadpleeg 5.5 Semantische Attributen (role, arcrole en title)) en het traversal attribuut label (raadpleeg 5.7 Traversal Attributen (label, from en to)) bevatten. De semantische attributen voorzien informatie over de bron in algemene bewoording, buiten de context van een individuele arc die ernaar leidt; het role attribuut geeft een eigenschap van de bron en het title attribuut geeft een door de mens-leesbare omschrijving van de bron. Het label attribuut biedt een manier om een arc-type element om ernaar te verwijzen bij het maken van een traversal arc.

Voorbeeld: Voorbeeld resource-Type Element Declaraties en Instance

Hierna volgt een niet-normatieve set van declaraties voor een resource-type element.

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

Hierna volgt hoe een XML element dat deze declaraties gebruikt kan uitzien.

  <gps xlink:label="PatJonesGPS">3.5</gps>

5.1.2 Afgelegen Bronnen voor een Extended Link (locator-Type Element)

Een extended link geeft afgelegen bronnen aan die erin deelnemen door middel van locator elementen.

Het XLink element voor locators is elk element met een attribuut in de XLink namespace dat een type met een waarde "locator" heeft.

Het locator-type element kan elke inhoud hebben. Dit verschilt van title-type elementen die directe children zijn (Raadpleeg 5.1.4 Titels voor Extended Links, Locators en Arcs (title-Type Element)), welke inhoud aanwezig is heeft geen XLink-gespecificeerde relatie met de link. Als een locator-type element geneste XLink elements bevat, hebben zulke ingesloten elementen geen XLink-gespecificeerde relatie tot de parent link. Als een locator-type element iets anders dan een extended-type element als parent heeft, heeft het locator-type element geen XLink-gespecificeerde betekenis.

Beperking: Attributen op Locator Element

Het locator-type element moet het locator attribuut (raadpleeg 5.4 Locator Attribuut (href)) hebben. Het locator attribuut (href) moet een waarde hebben.

Het locator-type element kan de semantische attributen role, title (raadpleeg 5.5 Semantische Attributen (role, arcrole en title)) en het traversal attribuut label (Raadpleeg 5.7 Traversal Attributen (label, from en to)) hebebn. Het locator attribuut biedt een URI referentie die een afgelegen bron identificeert. De semantische attributen voorzien informatie over de bron in algemene termen, buiten de context van een idividuele arc die ernaar leidt; het role attribuut geeft een eigenschap die de bron heeft en het title attribuut geeft een door de mens-leesbare omschrijving van de bron. Het label attribuut biedt een manier voor een arc-type element om ernaar te verwijzen bij het maken van een traversal arc.

Opmerking:

Een locator-type element op zichzelf schept geen link enkel omdat het een locator (href) attribuut heeft; in tegenstelling tot een simple-type element, maakt het geen XLink-bestuurde associatie tussen zichzelf en de bron waarnaar verwezen wordt.

Voorbeeld: Voorbeeld locator-Type Element Declaraties en Instance

Hierna volgt een niet-normatieve set van declaraties voor een locator-type element.

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

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

Hierna volgt hoe XML elementen die deze declaraties gebruiken er kunnen uitzien.

<persoon
  xlink:href="studenten/patjones62.xml"
  xlink:label="student62"
  xlink:role="http://www.voorbeeld.com/linkeigenschappen/student"
xlink:title="Pat Jones" />

<persoon
  xlink:href="profs/jaysmith7.xml"
  xlink:label="prof7"
  xlink:role="http://www.voorbeeld.com/linkeigenschappen/professor"
  xlink:title="Dr. Jay Smith" />

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

5.1.3 Traversal Regels voor een Extended Link (arc-Type Element)

Een extended link kan regels aangeven voor doortkruisen door de de deelnemende bronnen door middel van een reeks van optionele arc elementen.

Het XLink element voor arcs is elk element met een attribuut in de XLink namespace dat een type met een waarde "arc" heeft.

Het arc-type element kan elke inhoud hebben. In tegenstelling tot title-type elementen die directe children zijn (Raadpleeg 5.1.4 Titels voor Extended Links, Locators en Arcs (title-Type Element)), heeft welke inhoud dan ook die gepresenteerd wordt geen XLink-gespecificeerde relatie met de link. Als een arc-type element iets anders dan een extended-type element als parent heeft, zal het arc-type element geen XLink-gespecificeerde betekenis hebben.

Het arc-type element kan de traversal attributen from en to (raadpleeg 5.7 Traversal Attributen (label, from en to)), de gedragsattributen show en actuate (raadpleeg 5.6 Behavior Attributen (show en actuate) ) en de semantische attributen arcrole en title (raadpleeg 5.5 Semantische Attributen (role, arcrole en title)) bevatten.

De traversal attributen definiëren de gewenste traversal tussen paren van bronnen die deelnemen in dezelfde, waar de bronnen geïdentificeerd worden door hun label attribuutwaarden. Het from attribuut definieert bronnen waarvan traversal kan gestart worden, dit wil zeggen, startbronnen, terwijl het to attribuut bronnen definieert waarnaar getraversed kan worden, hetgeen wil zeggen, eindbronnen. De gedragsattributen specificeren het gewenste gedrag voor XLink toepasingen om te gebruiken bij traversing naar de eindbron.

De semantische attributen omschrijven de betekenis van de eindbronnen van de arc relatief aan de startbronnen. Het arcrole attribuut komt overeen met het [RDF] concept van een eigenschap, waar de rol geïnterpreteerd kan worden als vastleggen dat "starting-resource HEEFT arc-role ending-resource." Deze contextuele rol kan verschillen van de betekenis van een eindbron wanneer bekeken buiten de context van deze arc. Een bron zou bijvoorbeeld algemeen een "persoon" kunnen vertegenwoordigen maar in de context van een arc kan het de rol van "moeder" hebben en in de context van een andere arc kan het de rol van "dochter" hebben.

Wanneer dezelfde bron dient als een startbron in verschillende arcs (whether in a single link or across many links), wordt traversal-aanvraaggedrag niet verplicht door deze specificatie, maar als een mogelijkheid voor interactieve toepassingen waar een pop-up menu dat de relevante arc of link titels opsomt.

Het volgende diagram toont een extended link die vijf afgelegen bronnen associeert en regels biedt voor traversal ertussen. Alle gespecificeerde arcs zijn third-party arcs; hetgeen wil zeggen dat de arcs exclusief tussen afgelegen bronnen gaan. De niet-directionele dikke lijnen geven, net zoals hiervoor, aan dat de link de vijf bronnen associeert; de nieuwe stippellijnen met pijlen geven de traversal regels die de link biedt aan. Merk op dat sommige bronnen dezelfde label waarde delen.

Diagram van Out-of-Line Extended Link met Arcs

Dit diagram reflecteert directionele traversal arcs gemaakt door de volgende instellingen, waar zowel As als Cs toegestaan zijn om de traversal naar alle Bs te starten. Omdat sommige labels verschijnen in verschillende bronnen, maakt elke arc specificatie mogelijk verschillende traversal arcs tegelijk:

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

Veronderstel als ander voorbeeld een extended link die vijf locators bevat, waarvan twee label waarden "parent" an drie label waarden "child" zijn:

<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" />
... <!-- arc-type elementen zouden hier staan -->
</extendedlink>

Het volgende specificeert traversal van parent bronnen naar child bronnen, welke alle p1-c1, p1-c2, p1-c3, p2-c1, p2-c2 en p2-c3 bevat:

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

Als er geen waarde gegeven is voor een from of to attribuut, wordt de ontbrekende waarde geïnterpreteerd als voor alle labels voorzien op locator-type elementen in dat extended-type element. Het volgende specificeert bijvoorbeeld traversal van parents naar children en ook van children naar children, welke alle 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, en c3-c3 bevat:

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

Merk in dit geval op dat de traversal regels arcs bevatten van sommige bronnen naar andere bronnen met hetzelfde label (van children naar andere children), maar ook van sommige bronnen naar zichzelf (van een child naar zichzelf); dit is geen fout.

Als geen arc-type elementen voorzien zijn in een extended link, worden door uitbreiding de ontbrekende from en to waarden geïnterpreteerd voor alle labels in die link. dit zou equivalent moeten zijn met de volgende traversal specificatie:

<go xlink:type="arc" />

Als meer dan één locator hetzelfde label heeft, wordt de set van locators met hetzelfde label gezien als individuele locators, in plaats van als verwijzend naar een verenigde bron; het traversal gedrag van zo een link kan hetzelfde zijn voor een link waar alle locators verschillende rollen hebben en de passende arcs gespecificeerd zijn om de identieke traversal paren te produceren.

If the arc traversal rules for an extended link leave out any possible traversal pairs, XLink defines no traversal for these pairs. A higher-level application may perform non-XLink-directed traversals; for example, a link-checking process might traverse all available pairs of resources.

Beperking: No Arc Duplication

Each arc-type element must have a pair of from and to values that does not repeat the from and to values (respectively) for any other arc-type element in the same extended link; that is, each pair in a link must be unique.

Example: Sample arc-Type Element Declarations and Instance

Following is a non-normative set of declarations for an arc-type element.

<!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>

Following is how XML elements using these declarations might look.

<go
  xlink:from="student62"
  xlink:to="PatJonesGPA"
  xlink:show="new"
  xlink:actuate="onRequest"
  xlink:title="Pat Jones's GPA" />
<go
  xlink:from="CS-101"
  xlink:arcrole="http://www.voorbeeld.com/linkeigenschappen/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.voorbeeld.com/linkeigenschappen/advisor"
  xlink:to="prof7"
  xlink:show="replace"
  xlink:actuate="onRequest"
  xlink:title="Dr. Jay Smith, advisor" />

5.1.4 Titles for Extended Links, Locators, and Arcs (title-Type Element)

The extended-, locator-, and arc-type elements may have the title attribute (more about which see 5.5 Semantic Attributes (role, arcrole, and title)). However, they may also have a series of one or more title-type elements. Such elements are useful, for example, for cases where human-readable label information needs further element markup, or where multiple titles are necessary. One common motivation for using the title-type element is to account for internationalization and localization. For example, title markup might be necessary for bidirectional contexts or in East Asian languages, and multiple titles might be necessary for different natural-language versions of a title.

The XLink element for titles is any element with an attribute in the XLink namespace called type with a value of "title".

The title-type element may have any content. If a title-type element contains nested XLink elements, such contained elements have no XLink-specified relationship to the parent link containing the title. If a title-type element has anything other than an extended-, locator-, or arc-type element for a parent, the title-type element has no XLink-specified meaning.

Example: Sample title-Type Element Declarations and Instance

Following is a non-normative set of declarations for a title-type element. The element has been given the xml:lang attribute, which may be used in conjunction with server settings or other contextual information in determining which title to present.

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

<!ELEMENT name (honorific?, given, family)>
<!-- Further subelement declarations for names -->

Following is how XML elements using these declarations might look.

<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 Locating Linkbases (Special Arc Role)

For an XLink application to traverse from a starting resource to an ending resource, it needs to locate both the starting resource and the link. Locating the two pieces is not a problem in the case of outbound arcs because the starting resource is either the linking element itself or a child of the linking element. However, in the case of inbound and third-party arcs, the XLink application needs to be able to find both pieces somehow.

In the course load example, extended links can associate pairs of remote resources representing students and courses. In order for the system to load and present a "student resource" (such as a description and picture of the person) in a way that offers traversal to related information (for example, by allowing users to click on the student's name to traverse to information about the courses in which she is enrolled), it needs to locate and use the extended links that contain the association.

Linkbases are often used to make link management easier by gathering together a number of related linking elements. XLink provides a way to instruct XLink applications to access potentially relevant linkbases. The instruction takes the form of an arc specification (whether an explicit one in an extended link, or an implicit one in a simple link) that has the following value for its arcrole attribute:

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

Beperking: Linkbases Must Be XML

Any linkbase specified as the ending resource of an arc with this special value must be an XML document.

(XLink applications may also use any other means to locate and process additional l also use any other means to locate and process additional linkbases.)

The handling of a linkbase arc is much like the handling of a normal arc, except that traversal entails loading the ending resource (the linkbase) to extract its links for later use, rather than to present it to a user or to perform some other processing. Its handling is also special in that XLink applications must suspend traversal of linkbase arcs at user option.

Specifically, on loading a linkbase arc, an XLink application should keep track of what the starting resource is. Whenever a document containing that starting resource is loaded and traversal of the linkbase arc is actuated, the application should access the linkbase and extract any extended links found inside it. In the case that the extracted resource is a portion of a complete XML document, such as a range or a string range, only those extended links completely contained in the extracted portion should be made available.

The timing of linkbase arc traversal depends on the value of the actuate attribute on the arc. For example, if the value is "onLoad", the linkbase is loaded and its links extracted as soon as the starting resource is loaded. Any show attribute value on a linkbase arc must be ignored, because traversal does not entail presentation in this case.

Linkbases may be chained by virtue of serving as the starting resource of yet another linkbase arc. The application interpreting an initial linkbase arc may choose to limit the number of steps processed in the chain.

An application should maintain a list of extended links retrieved as a result of processing a linkbase, and should not retrieve duplicate resources or links in the case where a cyclic dependency exists. To ease XLink processing, document creators may wish to define linkbase arcs near the beginning of a document.

Example: Annotating a Specification

Following is a non-normative set of declarations for an extended link that specializes in providing linkbase arcs:

<!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>

Following is how an XML element using these declarations might look. This would indicate that when a specification document is loaded, a linkbase full of annotations to it should automatically be loaded as well, possibly necessitating re-rendering of the entire specification document to reveal any regions within it that serve as starting resources in the links found in the linkbase.

<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>

Following is how an XML element using these declarations might look if the linkbase loading were on request. This time, the starting resource consists of the words "Click here to reveal annotations." If the starting resource were the entire document as in the example above, a reasonable behavior for allowing a user to actuate traversal would be a confirmation dialog box.

<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 Simple Links (simple-Type Element)

[Definition: A simple link is a link that associates exactly two resources, one local and one remote, with an arc going from the former to the latter. Thus, a simple link is always an outbound link.]

The purpose of a simple link is to be a convenient shorthand for the equivalent extended link. A single simple linking element combines the basic functions of an extended-type element, a locator-type element, an arc-type element, and a resource-type element.

The following diagram shows the characteristics of a simple link; it associates one local and one remote resource, and implicitly provides a single traversal arc from the local resource to the remote one. This could represent, for example, the name of a student appearing in text which, when clicked, leads to information about the student.

Stylized Diagram of Simple Link
Example: Simple Link Functionality Done with an Extended Link

A simple link could be represented by an extended link in approximately the following way:

<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>

A simple link combines all the features above (except for the types and labels) into a single element. In cases where only this subset of features is required, the XLink simple linking element is available as an alternative to the extended linking element. The features missing from simple links are as follows:

  • Supplying arbitrary numbers of local and remote resources

  • Specifying an arc from its remote resource to its local resource

  • Associating a title with the single hardwired arc

  • Associating a role or title with the local resource

  • Associating a role or title with the link as a whole

The XLink element for simple links is any element with an attribute in the XLink namespace called type with a value of "simple". The simple equivalent of the above extended link would be as follows:

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

The simple-type element may have any content. The simple-type element itself, together with all of its content, is the local resource of the link, as if the element were a resource-type element. If a simple-type element contains nested XLink elements, such contained elements have no XLink-specified relationship to the parent link. It is possible for a simple-type element to have no content; in cases where the link is expected to be traversed on request, interactive XLink applications will typically generate some content in order to give the user a way to initiate the traversal.

The simple-type element effectively takes the locator attribute href and the semantic attributes role and title from the locator-type element, and the behavior attributes show and actuate and the single semantic attribute arcrole from the arc-type element.

It is not an error for a simple-type element to have no locator (href) attribute value. If a value is not provided, the link is simply untraversable. Such a link may still be useful, for example, to associate properties with the resource by means of XLink attributes.

Example: Sample simple-Type Element Declarations and Instance

Following is a non-normative set of declarations for a simple-type element.

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

Following is how an XML document might use these declarations.

..., and <studentlink xlink:href="students/patjones62.xml">Pat
Jones</studentlink> is popular around the student union.

5.3 XLink Element Type Attribute (type)

The attribute that identifies XLink element types is type.

Beperking: type Value

The value of the type attribute must be supplied. The value must be one of "simple", "extended", "locator", "arc", "resource", "title", or "none".

When the value of the type attribute is "none", the element has no XLink-specified meaning, and any XLink-related content or attributes have no XLink-specified relationship to the element.

Example: Sample type Attribute Declarations

Following is a non-normative attribute-list declaration for type on an element intended to be simple-type.

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

For an element that serves as an XLink element only on some occasions, one declaration might be as follows, where the document creator sets the value to "simple" in some circumstances and "none" in others. The use of "none" might be useful in helping XLink applications to avoid checking for the presence of an href value.

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

5.4 Locator Attribute (href)

The attribute that supplies the data that allows an XLink application to find a remote resource (or resource fragment) is href. It may be used on simple-type elements, and must be used on locator-type elements.

The value of the href attribute must be a URI reference as defined in [IETF RFC 2396], or must result in a URI reference after the escaping procedure described below is applied. The procedure is applied when passing the URI reference to a URI resolver.

Some characters are disallowed in URI references, even if they are allowed in XML; the disallowed characters include all non-ASCII characters, plus the excluded characters listed in Section 2.4 of [IETF RFC 2396], except for the number sign (#) and percent sign (%) and the square bracket characters re-allowed in [IETF RFC 2732]. Disallowed characters must be escaped as follows:

  1. Each disallowed character is converted to UTF-8 [IETF RFC 2279] as one or more bytes.

  2. Any bytes corresponding to a disallowed character are escaped with the URI escaping mechanism (that is, converted to %HH, where HH is the hexadecimal notation of the byte value).

  3. The original character is replaced by the resulting character sequence.

Because it is impractical for any application to check that a value is a URI reference, this specification follows the lead of [IETF RFC 2396] in this matter and imposes no such conformance testing requirement on XLink applications.

If the URI reference is relative, its absolute version must be computed by the method of [XML Base] before use.

For locators into XML resources, the format of the fragment identifier (if any) used within the URI reference is specified by the XPointer specification [XPTR].

Example: Sample href Attribute Declarations

Following is a non-normative attribute-list declaration for href on an element intended to be simple-type.

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

5.5 Semantic Attributes (role, arcrole, and title)

The attributes that describe the meaning of resources within the context of a link are role, arcrole, and title. The role attribute may be used on extended-, simple-, locator-, and resource-type elements. The arcrole attribute may be used on arc- and simple-type elements. The title attribute may be used on all of these types of elements.

The value of the role or arcrole attribute must be a URI reference as defined in [IETF RFC 2396], except that if the URI scheme used is allowed to have absolute and relative forms, the URI portion must be absolute. The URI reference identifies some resource that describes the intended property. When no value is supplied, no particular role value is to be inferred. Disallowed URI reference characters in these attribute values must be specially encoded as described in 5.4 Locator Attribute (href).

The title attribute is used to describe the meaning of a link or resource in a human-readable fashion, along the same lines as the role or arcrole attribute. (However, see also 5.1.4 Titles for Extended Links, Locators, and Arcs (title-Type Element).) A value is optional; if a value is supplied, it should contain a string that describes the resource. The use of this information is highly dependent on the type of processing being done. It may be used, for example, to make titles available to applications used by visually impaired users, or to create a table of links, or to present help text that appears when a user lets a mouse pointer hover over a starting resource.

Example: Sample role and title Attribute Declarations

Following is a non-normative attribute-list declaration for role and title on an element intended to be simple-type.

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

Following is a non-normative attribute-list declaration for arcrole and title on an element intended to be arc-type.

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

5.6 Behavior Attributes (show and actuate)

The behavior attributes are show and actuate. They may be used on the simple- and arc-type elements. When used on a simple-type element, they signal behavior intentions for traversal to that link's single remote ending resource. When they are used on an arc-type element, they signal behavior intentions for traversal to whatever ending resources (local or remote) are specified by that arc.

The show and actuate attributes are not required. When they are used, conforming XLink applications should give them the treatment specified in this section. There is no hard requirement ("must") for this treatment because what makes sense for an interactive application, such as a browser, is unlikely to make sense for a noninteractive application, such as a robot. However, all applications should take into account the full implications of ignoring the specified behavior before choosing a different course.

Example: Sample show and actuate Attribute Declarations

Following is a non-normative attribute-list declaration for show and actuate on an element intended to be simple-type.

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

Applications encountering arc-type elements in linkbase lists must treat the behavior attributes as if they were specified as show="none" and actuate="onLoad", even if other values were specified.

5.6.1 show Attribute

The show attribute is used to communicate the desired presentation of the ending resource on traversal from the starting resource.

Beperking: show Value

If a value is supplied for a show attribute, it must be one of the values "new", "replace", "embed", "other", and "none".

Conforming XLink applications should apply the following treatment for show values:

"new"

An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context. This is similar to the effect achieved by the following HTML fragment:

<A HREF="http://www.example.org" target="_blank">...</A>
"replace"

An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded. This is similar to the effect achieved by the following HTML fragment:

<A HREF="http://www.example.org" target="_self">...</A>
"embed"

An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource. This is similar to the effect achieved by the following HTML fragment:

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

The presentation of the starting resource typically does not consist of an entire document; it would be the entire document only when the root element of the document is a simple link. Thus, embedding typically has an effect distinct from replacing.

Just as for the HTML IMG element, embedding affects only the presentation of the relevant resources; it does not dictate permanent transformation of the starting resource. Put another way, when an embedded XLink is processed, the result of styling the ending resource of the link is merged into the result of styling the resource into which it is embedded. By contrast, when a construct such as an XInclude element [XInclude] is resolved, the original XML is actually transformed to include the referenced content.

The behavior of conforming XLink applications when embedding XML-based ([IETF RFC 2376] or [IETF I-D XMT]) ending resources is not defined in this version of this specification.

The presentation of embedded resources is application dependent.

"other"

The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.

"none"

The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.

If the starting or ending resource consists of multiple non-contiguous locations, such as a series of string ranges in various locations in the resource, then application behavior is unconstrained. (See [XPTR] for more information about selecting portions of XML documents.)

Note:

Some possibilities for application behavior with non-contiguous ending resources might include highlighting of each location, producing a dialog box that allows the reader to choose among the locations as if there were separate arcs leading to each one, concatenating the content of all the locations for presentation, and so on. Application behavior with non-contiguous starting resources might include concatenation and rendering as a single unit, or creating one arc emanating from each contiguous portion.

5.6.2 actuate Attribute

The actuate attribute is used to communicate the desired timing of traversal from the starting resource to the ending resource..

Beperking: actuate Value

If a value is supplied for an actuate attribute, it must be be one of the values "onLoad", "onRequest", "other", and "none".

Conforming XLink applications should apply the following treatment for actuate values:

"onLoad"

An application should traverse to the ending resource immediately on loading the starting resource. This is similar to the effect typically achieved by the following HTML fragment, when the user agent is configured to display images:

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

If a single resource contains multiple arcs whose behavior is set to show="replace" actuate="onLoad", application behavior is unconstrained by XLink.

"onRequest"

An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. An example of such an event might be when a user clicks on the presentation of the starting resource, or a software module finishes a countdown that precedes a redirect.

"other"

The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.

"none"

The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.

5.7 Traversal Attributen (label, from en to)

De traversal attributen zijn label, from en to. Het label attribuut kan gebruikt worden op de resource- en locator-type elementen. De from en to attributen kunnen gebruikt worden op het arc-type element.

Beperking: label, from en to waarden

De waarde van een label, from of to attribuut moet een NCName zijn. Als een waarde voorzien is voor een from of to attribuut, moet het overeenkomen met dezelfde waarde voor een label attribuut op een locator- of resource-type element dat als direct child verschijnt in hetzelfde extended-type element zoals het arc-type element doet.

A Referenties

A.1 Normatieve Referenties

IETF I-D XMT
XML Media Types. Makoto, M., St. Laurent, S. en D. Kohn, editors. Internet Engineering Task Force, 2001. (Raadpleeg http://www.ietf.org/rfc/rfc3023.txt.)
IETF RFC 2396
IETF (Internet Engineering Task Force). RFC 2396: Uniform Resource Identifiers. 1995. (Raadpleeg 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. (Raadpleeg http://www.ietf.org/rfc/rfc2279.txt.)
IETF RFC 2376
RFC 2376: XML Media Types. Internet Engineering Task Force, 1998. (Raadpleeg 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. (Raadpleeg http://www.ietf.org/rfc/rfc2732.txt.)
XML
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen en Eve Maler, editors. Extensible Markup Language (XML) 1.0 (Second Edition). World Wide Web Consortium, 2000. (Raadpleeg http://www.w3.org/TR/2000/REC-xml-20001006.)
IETF RFC 2119
S. Bradner, editor. Key words for use in RFCs to Indicate Requirement Levels. March 1997. (Raadpleeg http://www.ietf.org/rfc/rfc2119.txt.)
XML Base
Jonathan Marsh, editor. XML Base (XBase). World Wide Web Consortium, 1999. (Raadpleeg http://www.w3.org/TR/2001/REC-xmlbase-20010627/.)
XML Names
Tim Bray, Dave Hollander en Andrew Layman, editors. Namespaces in XML. World Wide Web Consortium, 1999. (Raadpleeg http://www.w3.org/TR/1999/REC-xml-names-19990114/.)

A.2 Niet-Normatieve Referenties

CHUM
Steven J. DeRose en David G. Durand. 1995. "The TEI Hypertext Guidelines." In Computing and the Humanities 29(3). Herdrukt in Text Encoding Initiative: Background and Context, editors Nancy Ide en 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), Februari 1994: 30-39.
FRESS
Steven J. DeRose en Andries van Dam. 1999. "Document structure in the FRESS Hypertext System." Markup Languages 1 (1) Winter. Cambridge: MIT Press: 7-32. (Raadpleeg ook http://www.stg.brown.edu/~sjd/fress.html voor meer informatie.)
HTML
HTML 4.01 Specification. World Wide Web Consortium, 1999. (Raadpleeg http://www.w3.org/TR/1999/REC-html401-19991224/.)
Intermedia
Yankelovich, Nicole, Bernard J. Haan, Norman K. Meyrowitz en Steven M. Drucker. 1988. "Intermedia: The Concept and the Construction of a Seamless Information Environment." IEEE Computer 21 (Januari 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. (Raadpleeg http://www.y12.doe.gov/sgml/wg8/document/1920.htm.)
MicroCosm
Hall, Wendy, Hugh Davis en Gerard Hutchings. 1996. Rethinking Hypermedia: The Microcosm Approach. Boston: Kluwer Academic Publishers. ISBN 0-7923-9679-0.
OHS
van Ossenbruggen, Jacco, Anton Eliëns en Lloyd Rutledge. "The Role of XML in Open Hypermedia Systems." Position paper for the 4th Workshop on Open Hypermedia Systems, ACM Hypertext '98. (Raadpleeg http://aue.auc.dk/~kock/OHS-HT98/Papers/ossenbruggen.html.)
RDF
Ora Lassila and Ralph Swick, editors. Resource escription Framework (RDF) Model and Syntax Specification. World Wide Web Consortium, 1999. (Raadpleeg http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/.)
TEI
C. M. Sperberg-McQueen en Lou Burnard, ditors.Guidelines for Electronic Text Encoding and Interchange. Association for Computers and the Humanities (ACH), Association for Computational Linguistics (ACL) en Association for Literary and Linguistic Computing (ALLC). Chicago, Oxford: Text Encoding Initiative, 1994.
XIS
John Cowan en Richard Tobin, editors. XML Information Set. World Wide Web Consortium, 2001. (Raadpleeg http://www.w3.org/TR/2001/CR-xml-infoset-20010514/.)
XLinkToRDF
Ron Daniel, editor. Harvesting RDF Statements from XLinks. World Wide Web Consortium, 2000. (Raadpleeg http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929/.)
XLinkNaming
Eve Maler, Daniel Veillard en Henry S. Thompson, editors. XLink Markup Name Control. World Wide Web Consortium, 2000. (Raadpleeg http://www.w3.org/TR/2000/NOTE-xlink-naming-20001220/.)
XInclude
Jonathan Marsh en David Orchard, editors. XML Inclusions (XInclude) Version 1.0. World Wide Web Consortium, 2000. (Raadpleeg http://www.w3.org/TR/2001/WD-xinclude-20010516/.)
XLREQ
Steven DeRose, editor. XML XLink Requirements Version 1.0.World Wide Web Consortium, 1999. (Raadpleeg http://www.w3.org/TR/1999/NOTE-xlink-req-19990224/.)
XLDP
Eve Maler en Steve DeRose, editors. XML Linking Language (XLink) Design Principles.World Wide Web Consortium, 1998. (Raadpleeg http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303.)
XPTR
Ron Daniel, Steve DeRose en Eve Maler, editors. XML Pointer Language (XPointer) V1.0.World Wide Web Consortium, 1998. (Raadpleeg http://www.w3.org/TR/2001/WD-xptr-20010108/.)

B Voorbeeld DTD (Niet-Normatief)

De volgende DTD maakt alle XLink constructies waarvoor deze specificatie geen gedrag specificeert ongeldig. Het wordt enkel voorzien omdat het gemakkelijk is voor toepassingsontwikkelaars; het heeft geen normatieve status.

De volgende veronderstellingen worden gevolgd voor deze DTD:

Andere veronderstellingen en voorwaarden verschijnen als opmerkingen in de 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 is niet vereist, maar biedt grotendeels de motivatie
      voor title elementen aanvullend op attributen en daarom wordt het 
      hier ter gebruiksgemak voorzien -->
<!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*)>
<!-- label is niet vereist, maar locators hebben geen bijzondere XLink 
     functie als ze niet gelabeled worden -->
<!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*)>
<!-- from en to hebben standaard gedrag wanneer waarden ontbreken -->
<!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 Working Group Leden en Dankwoord (Niet-Normatief)

Deze specificatie werd gemaakt in de XML Linking Working Group welke de volgende actieve leden kende op het ogenblik van afwerken van deze specificatie:

De editors wensen de aanzienlijke bijdragen van Tim Bray, die eerder co-editor en co-chair was, en Ben Trafford, die eerder co-editor was, te bedanken. We willen ook belangrijke bijdragen van Gabe Beged-Dov, die het XArc voorstel schreef, erkennen. Tot slot willen we ook de XML Linking Interest Group en de Working Group bedanken voor hun ondersteuning en input. We danken ook Henry Thompson voor het helpen voorzitten van de group en het dienst doen als hoofdcontact voor de laatste paar maanden voor deze publicatie.