Les liens étendus donnent la pleine mesure de XLINK puisqu'ils apportent des fonctionnalités supplémentaires à l'image des liens multidirectionnels ou du comportement des ressources entre elles par rapport à des liaisons.
La structure des liens étendus semble très complexe en comparaison à celle des liens HTML ou des liens simples.
En effet, les liens sont multidirectionnels, c'est-à-dire qu'ils ont la faculté de pouvoir joindre simultanément, un nombre quelconque de ressources.
Par exemple, un lien étendu pourrait construire un document résultant à partir de plusieurs portions de documents situés à des emplacements différents.
A cet effet, un lien étendu est composé d'une ressources et de localisateurs.
L'élément du type ressource <xlink:resource> est une ressource locale qui représente la source du lien.
Lorsqu'une ressouce est spécifié, alors le lien étendu sera qualifié de inline (en ligne) puisque le lien provient de la ressource énoncée.
Si aucune ressource locale n'est indiquée, alors le lien étendu sera qualifié de out of line (hors ligne) car le lien ne fait parti d'aucun document source.
Les éléments de type localisateur <xlink:locator> sont des ressources distantes qui représentent les cibles du lien.
Les arcs de liens <xlink:arc> permettent de définir le comportement des liaisons entre les ressources participant au lien étendu.
Les localisateurs peuvent être aussi bien des cibles que des sources selon les caractéristiques énoncées par les arcs et la qualification du lien étendu qui les contient.
Les liens étendus ne comportant pas de ressources locales peuvent être stockés dans une base de liens. De cette façon, il devient possible de regrouper des liens étendus dans un fichier différent de ceux des documents XML auxquels ils font références.
Dans l'exemple ci-dessous, un lien étendu contient une ressource locale et quatre localisateurs. Tous sont repérés par un label d'identification.
L'arc de lien spécifie quatre traversées, toutes allant de la ressource locale vers chacune des ressources cibles.
Le dernier arc de traversée affichera le document dans une nouvelle fenêtre, les autres se contentant d'un affichage dans la fenêtre d'origine.
<menu xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <titre xlink:href="http://www.site.com/titre.xml" xlink:type="locator" xlink:title="Titre du livre en cours" xlink:label="tit"> Titre </titre> <auteur xlink:href="http://www.site.com/auteur.xml" xlink:type="locator" xlink:title="Auteur du livre en cours" xlink:label="aut"> Auteur </auteur> <editeur xlink:href="http://www.site.com/editeur.xml" xlink:type="locator" xlink:title="Editeur du livre en cours" xlink:label="edi"> Editeur </editeur> <livre xlink:href="http://www.site.com/livre.xml" xlink:type="locator" xlink:title="Informations sur le livre en cours" xlink:label="liv"> Livre </livre> <info xlink:type="resource" xlink:title="Interroger la base de la bibliothèque" xlink:label="inf"> <details>Informations</details> </info> <xlink:arc from="inf" to="tit" show="replace" actuate="onRequest"/> <xlink:arc from="inf" to="aut" show="replace" actuate="onRequest"/> <xlink:arc from="inf" to="edi" show="replace" actuate="onRequest"/> <xlink:arc from="inf" to="liv" show="new" actuate="onRequest"/> </menu> |
Le second exemple ci-dessous, montre un lien étendu hors ligne (out of line) avec quatre ressources cibles et un arc de lien qui autorise toutes les traversées possibles entre n'importe quelles localisateurs énumérés.
<bibliotheque xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <titre xlink:href="http://www.site.com/titre.xml" xlink:type="locator" xlink:title="Titres des livres de la bibliothèque" xlink:label="tit"> Titre </titre> <auteur xlink:href="http://www.site.com/auteur.xml" xlink:type="locator" xlink:title="Auteurs des livres de la bibliothèque" xlink:label="aut"> Auteur </auteur> <editeur xlink:href="http://www.site.com/editeur.xml" xlink:type="locator" xlink:title="Editeurs des livres de la bibliothèque" xlink:label="edi"> Editeur </editeur> <resume xlink:href="http://www.site.com/resume.xml" xlink:type="locator" xlink:title="Résumé des livres de la bibliothèque" xlink:label="res"> Résumé </resume> <xlink:arc show="replace" actuate="onRequest"/> </bibliotheque> |
La déclaration des composants tels que les éléments et attributs XLinks de l'exemple ci-dessus, dans la Définition de Type de Document (DTD) peut se faire comme suit :
<!ELEMENT bibliotheque (titre, auteur, editeur, resume, xlink:arc)> <!ATTLIST bibliotheque xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink" xlink:type (extended) #FIXED "extended"> <!ENTITY % attributs-xlink "xlink:href CDATA #REQUIRED xlink:label NMTOKEN #REQUIRED xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:type CDATA (locator|resource) #REQUIRED 'locator'"> <!ELEMENT titre (#PCDATA)> <!ATTLIST titre %attributs-xlink;> <!ELEMENT auteur (#PCDATA)> <!ATTLIST auteur %attributs-xlink;> <!ELEMENT editeur (#PCDATA)> <!ATTLIST editeur %attributs-xlink;> <!ELEMENT resume (#PCDATA)> <!ATTLIST resume %attributs-xlink;> <!ELEMENT xlink:arc EMPTY> <!ATTLIST xlink:arc show (new|replace|embed|other|none) #REQUIRED 'replace' actuate (onLoad|onRequest|other|none) #REQUIRED 'onRequest' from NMTOKEN #IMPLIED to NMTOKEN #IMPLIED title CDATA #IMPLIED > |
Dans cet extrait de DTD, on peut remarquer que plusieurs attributs possèdent une valeur fixe ou par défaut.
De cette façon, il est possible de de ne pas citer les attributs en question dans le document puisqu'ils sont automatiquement activés par défaut.
Cela permet de raccourcir considérablement la rédaction des liens dans un document XML.
<bibliotheque> <titre xlink:href="http://www.site.com/titre.xml" xlink:title="Titres des livres de la bibliothèque" xlink:label="tit"> Titre </titre> <auteur xlink:href="http://www.site.com/auteur.xml" xlink:title="Auteurs des livres de la bibliothèque" xlink:label="aut"> Auteur </auteur> <editeur xlink:href="http://www.site.com/editeur.xml" xlink:title="Editeurs des livres de la bibliothèque" xlink:label="edi"> Editeur </editeur> <resume xlink:href="http://www.site.com/resume.xml" xlink:title="Résumé des livres de la bibliothèque" xlink:label="res"> Résumé </resume> <xlink:arc/> </bibliotheque> |
L'interaction des sources, des cibles et des comportements de liaisons, respectivement représentés par les ressources, les localisateurs et les arcs de liens offrent au document XML un support de liens très puissant et efficace.