Les base de liens (baselink) regroupent des liens étendus de type hors ligne (out of line), c'est-à-dire n'étant pas composés d'éléments de type ressource locale <xlink:resource>.
Par conséquent, les ressources présentes dans ces liens étendus ne doivent être que du type localisateur <xlink:locator>.
De cette façon, toutes les ressources incluses dans une base de liens ont la possibilité de devenir soit une source, soit une cible dans les arcs de traversée définis par les éléments de type arc de liens <:xlink:arc>.
Pour qu'une application XLink puisse entamer la traversée d'une ressource source vers une ressource cible, cela nécessite de localiser soit la ressource de départ, soit le lien.
Localiser ces deux derniers ne présente aucun problème dans le cas des arcs outbound (allant vers l'extérieur) car la ressource de départ est soit l'élément liant lui-même, soit un enfant de l'élément liant.
Toutefois, dans le cas d'arcs de type inbound (allant vers l'intérieur) et third-party (tiers d'arc), l'application XLink a besoin d'être capable de rechercher par n'importe quels moyens la ressource source ou la ressource cible.
Les bases de liens sont souvent utilisées dans le but de faciliter l'administration des liens par l'intermédiaire d'un regroupement d'éléments liants d'une même famille.
XLink fournit un chemin pour informer les applications XLinks afin d'accéder potentiellement aux bases de liens appropriées.
L'instruction prend la forme d'une spécification d'arc (si explicite dans un lien étendu, ou implicite dans un lien simple) qui a la valeur suivante pour son attribut xlink:arcole.
<xlink:arc
from="source"
to="cible"
actuate="événement"
arcole="http://www.w3.org/1999/xlink/properties/linkbase">
L'utilisation de cette URI (Uniform Resource Identifier) implique que la base de liens ciblée par ce genre d'arc, doit être impérativement un document de type XML.
Les applications XLink peuvent également utiliser n'importe quels autres moyens pour localiser et traiter les bases de liens supplémentaires.
La manipulation d'un arc d'une base de liens s'effectue comme celle d'un arc standard, excepté que la traversée entraîne le chargement de la ressource cible en l'occurrence, la base de liens, afin d'extraire ses liens pour une utilisation postérieure, plutôt que de la présenter à un utilisateur ou d'exécuter quelqu'autre processus.
Sa manipulation est aussi spéciale dans cette application XLink qui doit suspendre la traversée d'arcs de base de liens à une option utilisateur.
Spécifiquement, sur le chargement d'un arc de base de liens, une application XLink devrait conserver la trace de la ressource de départ.
Chaque fois qu'un document contenant cette ressource de départ est chargée et la traversée de l'arc de la base de liens est activée, l'application devrait accéder à la base de liens et extraire n'importe lequel des liens étendus trouvé à l'intérieur.
Dans le cas, d'une portion d'un document XML complet extrait de la ressource, à l'image d'un intervalle de noeuds ou de chaîne de caractères, seulement ces liens étendus là entièrement contenu dans la portion extraite devrait être assuré d'être disponible.
La synchronisation de la traversée de l'arc de la base de liens dépend de la valeur de l'attribut xlink:actuate de l'arc.
Par exemple, si la valeur est onLoad, la base de liens est chargée et ses liens sont extraits aussitôt que la ressource de départ est chargée.
N'importe quelle valeur d'attribut xlink:show d'un arc de base de liens doit être ignorée, car la traversée n'entraîne pas de présentation dans ce cas.
Les bases de liens peuvent être enchaînées à condition qu'elles puissent servir de ressources de départ pour d'autres arcs de bases de liens. L'application interprétant un arc de base de lien initial peut choisir de limiter le nombre d'étapes traitées dans la chaîne.
Une application devrait conserver une liste de liens étendus sauvée comme un résultat de traîtement d'une base de liens, et devrait ne pas préserver les ressources identiques ou les liens dans le cas ou une dépendance cyclique existe. Dans le but de soulager le traitement de XLink, il est souhaitable que la déclaration des arcs de base de liens se situe au début d'un document.
Exemple :<!-- Document appel_base.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appel_base [
<!ELEMENT appel_base ((origine|base_lien|chargement)*)>
<!ATTLIST appel_base
xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
xlink:type (extended) #FIXED "extended"
xlink:title CDATA #IMPLIED>
<!ELEMENT origine EMPTY>
<!ATTLIST origine
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT base_lien EMPTY>
<!ATTLIST base_lien
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT chargement EMPTY>
<!ATTLIST chargement
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>
]>
<appel_base
xlink:title="Chargement de la base de liens : lien_sprinter.xml">
<origine xlink:label="doc" xlink:href="sprinter.xml"/>
<base_lien xlink:label="base" xlink:href="lien_sprinter.xml"/>
<chargement xlink:from="doc" xlink:to="base" actuate="onLoad"/>
</appel_base>
<!-- Base de liens lien_sprinter.xml -->
<?xml version="1.0" ISO-8859-1"?>
<!DOCTYPE xlink:extended SYSTEM "definition.dtd">
<xlink:extended>
<xlink:locator label="ffred" href="#fredericks"/>
<xlink:locator label="dbail" href="#bailey"/>
...
<xlink:locator label="vit3" href="cent_metre.xml#fredericks"/>
<xlink:locator label="vit9" href="cent_metre.xml#bailey"/>
...
<xlink:arc from="ffred" to="vit3" actuate="onLoad" show="embed"/>
<xlink:arc from="dbail" to="vit9" actuate="onLoad" show="embed"/>
...
</xlink:extended>
<!-- Document sprinter.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE coureur [
<!ELEMENT coureur (nom+)>
<!ELEMENT nom ANY>
<,!ATTLIST nom id ID #REQUIRED>
]>
<coureur>
<nom id="fredericks">
Franckie Fredericks
</nom>
<nom id="bailey">
Donovan Bailey
</nom>
...
</coureur> |
Dans l'exemple ci-dessus, le chargement initial du document intermédiaire appel_base.xml, entraîne l'activation de son lien étendu et partant de son arc de lien. Subséquemment, la ressource de départ sprinter.xml est alors associée à la ressource de fin, soit la base de liens lien_sprinter.xml. Le document sprinter.xml est alors parcouru en réinterprétant ses données conformément à la base de liens. Cette-dernière, finalement, active ses arcs de liens et affiche dans le document sprinter.xml, à la place des éléments <nom id="..."> (ressources de départ), les ressources finales provenant du document cent_metre.xml.
<appel_base
xlink:title="Détermination des liens dans le document courant">
<origine
xlink:label="doc"
xlink:href="sprinter.xml#string-range(//*,'Consulter sa fiche.')"/>
<base_lien xlink:label="base" xlink:href="lien_sprinter.xml"/>
<chargement xlink:from="doc" xlink:to="base" actuate="onRequest"/>
</appel_base>
<!-- Document sprinter.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE coureur [
<!ELEMENT coureur (nom+)>
<!ELEMENT nom ANY>
<,!ATTLIST nom id ID #REQUIRED>
]>
<coureur>
<nom id="fredericks">
Franckie Fredericks
Consulter sa fiche.
</nom>
<nom id="bailey">
Donovan Bailey
Consulter sa fiche.
</nom>
...
</coureur> |
Dans cet exemple, l'activation d'un lien s'effectue sur requête de l'utilisateur. L'intervalle de chaîne de caractères Consulter sa fiche. est la ressource de départ de l'arc de liens initial et après interprétation fera office de lien dans le document sprinter.xml pour chaque coureur.