Ceci est une traduction de la recommandation du W3C portant sur le langage de liaison XML.
Cependant ce n'est pas la version officielle en français de la recommandation. Seul le document original en anglais a valeur de norme. On peut l'obtenir à : http://www.w3.org/TR/xlink/.
Des erreurs ont pu survenir malgré le soin apporté à ce travail.
Certains concepts sont difficiles à rendre en français ou peuvent nécessiter une explication,
aussi les expressions originales en anglais viennent parfois en renfort dans le texte sous cette forme :
ex. traduction [ndt. translation]
D'autre part, certains liens renvoient sur des définitions contenues dans les recommandations originales du W3C. Ces liens sont doublés vers leur version française et sont signalés ainsi : vf.
Cette traduction est disponible sous forme d'archive compressée et, le cas échéant, dans d'autres formats à l'adresse http://www.yoyodesign.org/doc/w3c/w3c.html.
On peut consulter les traductions en français d'autres documents du W3C à
http://www.w3.org/Consortium/Translation/French
Copyright © 1994-2003 World Wide Web Consortium,
(Massachusetts Institute of Technology,
European Research Consortium for Informatics and Mathematics,
Keio University).
Tous droits réservés.
Consulter la notice de copyright pour les productions du W3C.
Copyright©2001 W3C® (MIT, INRIA, Keio), tous droits réservés. Les règles de responsabilité, de nom de marque, d'utilisation des documents et de licence des logiciels du W3C s'appliquent.
Cette spécification définit le langage de liaison XHTML (XLink), qui permet l'insertion d'éléments dans les documents XHTML afin de créer et de décrire des liens entre les ressources. Celui-ci utilise la syntaxe XHTML pour créer les structures capables de décrire des liens similaires aux hyperliens unidirectionnels simples, qu'on trouve actuellement dans HTML, ainsi que des liens plus sophistiqués.
Ce document, qui a été revu par les membres du W3C et les tiers intéressés, a été homologué par le Directeur au titre de recommandation du W3C. C'est un document stable qui peut être utilisé comme matériel de référence ou cité comme référence normative à partir d'un autre document. Le rôle du W3C en produisant la recommandation est d'attirer l'attention sur la spécification et d'en promouvoir la plus grande diffusion. Ceci pour améliorer les fonctionnalités et l'interopérabilité du Web.
Pour des renseignements sur le langage XPointer, qui peut s'utiliser avec XLink, voir [XPTR].
Ce document a été élaboré par le groupe de travail sur les liaisons XHTML du W3C appartenant à l'activité XHTML du domaine architecture du W3C. Pour l'historique des travaux, veuillez consulter la déclaration d'activité XHTML.
Veuillez signaler les éventuelles erreurs dans ce document sur la liste de diffusion publique www-xml-linking-comments@w3.org (archives disponibles à http://lists.w3.org/Archives/Public/www-xml-linking-comments/). Toutes les erreurs confirmées seront documentées dans une liste des erreurs disponible à http://www.w3.org/2001/06/xlink-errata.
Seule la version en anglais de cette spécification est normative. On peut trouver des renseignements sur les traductions de ce document à http://www.w3.org/2001/06/xlink-translations.
Voir [XLDP] pour une information de base concernant les principes de construction qui renseignent XLink et [XLREQ] pour les exigences vis-à-vis de XLink que ce document essaye de satisfaire. XLink ne reconnaît pas toutes les structures de liaison HTML telles quelles : voir [XLinkNaming] pour une présentation de la situation.
On peut trouver la liste des recommandations courantes et des autres documents techniques du W3C à http://www.w3.org/TR/.
extended)
resource)locator)arc)title)simple)type)href)role, arcrole et title)show et actuate)
label, from et to)A Références
A.1 Les références normatives
A.2 Les références non-normatives
B Exemple de DTD (non-normatif)
C Les membres du groupe de travail et les remerciements (non-normatif)
Cette spécification définit le langage de liaison XHTML (XLink), qui permet l'insertion d'éléments dans les documents XHTML afin de créer et de décrire des liens entre des ressources.
XLink fournit un cadre pour la création à la fois de liens unidirectionnels simples et de structures de liaison plus complexes. Il permet aux documents XHTML :
D'affirmer une relation de lien entre plus de deux ressources ;
d'associer des métadonnées à un lien ;
d'exprimer des liens qui résident dans une localisation séparée des ressources reliées.
XLink trouve une application importante dans les systèmes hypermédias qui ont des hyperliens. Comme cas simple d'hyperlien, l'élément HTML A, qui possède les caractéristiques suivantes :
L'hyperlien utilise un URI comme technologie de localisation ;
l'hyperlien est exprimé à l'une de ses deux extrémités ;
l'hyperlien identifie l'autre extrémité (même si le serveur a toute latitude pour trouver ou créer dynamiquement cette destination) ;
les utilisateurs ne peuvent initier la traversée que partant de l'extrémité sur laquelle l'hyperlien est exprimé vers l'autre extrémité ;
l'effet de l'hyperlien sur les fenêtres, les cadres, les listes de retour, les feuilles de style en vigueur, et ainsi de suite, est déterminé par l'agent utilisateur, non par l'hyperlien proprement dit. Par exemple, la traversée du lien de l'élément A remplace normalement la vue courante, l'utilisateur ayant éventuellement l'option d'ouvrir une nouvelle fenêtre.
Ce sont des caractéristiques puissantes, mais le modèle qui les sous-tend limite la portée des fonctionnalités possibles de l'hyperlien. Le modèle défini dans cette spécification partage avec HTML l'utilisation de la technologie de l'URI, tout en offrant des fonctionnalités, au-delà de HTML, qui n'étaient disponibles auparavant que dans les systèmes hypermédias dédiés et qui rendent les hyperliens plus adaptables et plus flexibles. En même temps que l'apport de structures de données de liaison, XLink fournit un modèle de comportement minimal pour le lien ; les applications de plus haut niveau calquées sur XLink spécifieront souvent des restitutions comme des traitements alternatifs ou plus sophistiqués.
Le traitement intégré des liens spécialisés utilisés dans d'autres domaines techniques, telles que les clés étrangères [ndt. foreign keys] dans les bases de données relationnelles et les valeurs des références dans les langages de programmation, est hors du propos de cette spécification.
La conception de XLink s'est nourrie de la connaissance des systèmes hypermédias et des standards établis. Les standards suivants ont eu une influence particulière :
HTML [HTML] : définit plusieurs types d'élément qui représentent des liens ;
HyTime [ISO/IEC 10744] : définit des structures de liens en-ligne, entrants et de tiers, ainsi que quelques caractéristiques sémantiques, y compris le contrôle de la traversée et la présentation des objets ;
Les principes directeurs de l'initiative pour le codage du texte [TEI] : fournit des structures pour la création de liens, d'objets composés et de collections de liens.
Nombre d'autres systèmes de liaison ont également influencé la conception de XLink, notamment [Dexter], [FRESS], [OHS], [MicroCosm] et [Intermedia].
Voir le document du cahier des charges XLink [XLREQ] pour une explication complète des exigences pour la conception de XLink.
Cette section décrit les termes et les concepts essentiels pour la compréhension de XLink, sans aborder la syntaxe utilisé pour créer les structures XLink. Quelques termes supplémentaires sont introduits dans les parties suivantes de cette spécification.
[Définition : Un lien XLink est une relation explicite entre des ressources ou portions de ces ressources]. [Définition : Cette relation est rendue explicite par un élément de liaison Xlink, qui est un élément XHTML conforme à XLink, confirmant l'existence du lien]. Il existe six éléments XLink ; seuls deux d'entre eux sont considérés comme des éléments de liaison. Les autres fournissent diverses informations qui décrivent les caractéristiques du lien. (Le terme « lien » tel qu'il est employé dans cette spécification désigne seulement un lien XLink, bien que rien n'empêche les structures non-XLink de servir comme liens).
La notion de ressources est universelle au World Wide Web.
[Définition : Comme expliqué dans le document [IETF RFC 2396],
une ressource représente une quelconque unité adressable d'information ou de service]. Les fichiers, les images,
les documents, les programmes et les résultats de requête en sont des exemples. Le moyen qui est utilisé pour
adresser une ressource est une référence d'URI
(décrit plus en détails dans la section « 5.4 L'attribut localisateur (href) »).
Il est possible d'adresser une portion de ressource. Par exemple, si la ressource entière consiste en un document
XHTML, la portion utile de cette ressource pourrait être un élément
particulier dans ce document. Le suivi du lien vers cet élément pourrait aboutir, par exemple, à sa mise en
évidence ou bien au défilement du document jusqu'à celui-ci.
[Définition : Quand un lien associe un ensemble de ressources, ces ressources sont dites participer au lien]. Même si les liens XLink doivent apparaître dans des documents XHTML, ils sont capables d'associer toutes sortes de ressources, pas seulement celles codées en XHTML..
L'une des utilisations habituelles de XLink est la création d'hyperliens. [Définition : Un hyperlien est principalement un lien destiné à une présentation auprès d'un utilisateur humain. Cependant, rien dans la conception de XLink n'empêche son utilisation avec des liens prévus seulement pour une consommation par des ordinateurs.
[Définition : L'utilisation ou le suivi d'un lien, quel que soit le motif, est appelée traversée]. Bien que certaines sortes de lien puissent associer un nombre arbitraire de ressources, la traversée implique toujours un couple de ressources (ou de portions de celles-ci) ; [Définition : la source à partir de laquelle la traversée est initiée est la ressource de départ] et [Définition : la destination est la ressource d'arrivée]. Remarquez que le terme « ressource » employé de cette manière peut parfois s'appliquer à une portion de ressource, non à une ressource entière.
[Définition : L'information concernant la manière de traverser un couple de ressources, comprenant la direction de la traversée et les informations de comportement éventuelles de l'application, est appelée un arc]. Si deux arcs dans un lien spécifient le même couple de ressources, mais inversent leurs ressources de départ et d'arrivée, alors le lien est multidirectionnel, ce qui ne revient pas au même qu'un simple « aller et retour » après la traversée du lien.
[Définition : Une ressource locale est un élément XHTML qui participe au lien par le fait d'avoir comme parent, ou d'être lui-même, un élément de liaison]. [Définition : Toute ressource, ou portion de ressource, qui participe au lien par le fait d'être adressée par une référence d'URI est considérée une ressource distante, même si cette ressource se trouve dans le même document XHTML que le lien, ou à l'intérieur même de l'élément de liaison]. Autrement dit, une ressource locale est spécifiée « par valeur » et une ressource distante « par référence ».
[Définition : Un arc, qui a une ressource de départ locale et une
ressource d'arrivée distante, est dit sortant [ndt. outbound], c'est-à-dire qu'il
s'éloigne de l'élément de liaison]. (Comme exemples de lien avec un tel arc, il y a les éléments
A en HTML, « clinks » de HyTime et
XREF de TEI).
[Définition : Si la ressource d'arrivée d'un arc est locale mais que
celle de départ est distante, alors l'arc est dit entrant [ndt. inbound]].
[Définition : Si ni la ressource de départ ni celle d'arrivée
ne sont locales, alors il s'agit d'un arc tiers [ndt. third-party]]. Bien que ce ne soit pas obligatoire,
un lien ne spécifie typiquement qu'une seule sorte d'arc tout du long, et on pourrait donc s'y référer comme
à un lien entrant, sortant ou tiers.
Pour créer un lien qui émane d'une ressource sur laquelle vous n'avez pas accès en écriture (ou choisi de ne pas y exercer d'écriture), ou à partir d'une ressource qui n'offre aucun moyen pour incorporer des structures de liaison, il est nécessaire d'utiliser un arc entrant ou bien tiers. Quand on utilise ces arcs, les exigences pour la découverte des liens sont plus importantes que pour les arcs sortants. [Définition : Les documents contenant des collections de liens entrants et tiers sont appelés bases de données de liens ou bases de liens [ndt. linkbases]].
Cette section précise les obligations de traitement et de conformité pour les applications et le balisage XLink.
[Définition : Les mots-clés « doi(ven)t », « ne doi(ven)t pas », « requis », « devra », « ne devra pas », « devrai(en)t », « ne devrai(en)t pas », « recommandé », « peu(ven)t » et « optionnel » dans cette spécification doivent s'interpréter selon le document [IETF RFC 2119]].
Le traitement de XLink s'appuie sur [XML], [XML Names], [XML Base] et [IETF RFC 2396] (tel que mis à jour par [IETF RFC 2732]).
Un élément XHTML est conforme à XLink :
s'il a un attribut type issu de l'espace de nommage XLink dont la valeur est l'une parmi "simple", "extended",
"locator", "arc", "resource", "title" ou "none", and
et s'il adhère aux contraintes de conformité imposées par le type de l'élément XLink choisi, telles qu'elles sont décrites dans cette spécification.
Cette spécification n'impose aucune contrainte particulière sur les DTD ; la conformité ne concerne que les éléments et les attributs.
Une application XLink désigne tout module logiciel interprétant les documents XHTML bien-formés qui contiennent des éléments et attributs XLink, ou des ensembles d'information XHTML [XIS] qui contiennent des items et des propriétés d'information correspondant aux éléments et attributs XLink. (Ce document se réfère à des éléments et attributs, mais toutes les spécifications qu'il contient s'appliquent aussi bien à leurs équivalents dans l'ensemble d'information). Une telle application est conforme :
si elle observe les conditions obligatoires pour les applications (« doivent ») qui sont définies dans cette spécification ;
et si, pour toutes les conditions optionnelles (« devrait » et « peut ») qu'elle choisirait d'observer, elle les observe de la façon prescrite ;
et si elle effectue les tests de conformité du balisage en fonction de toutes les contraintes de conformité qui apparaissent dans cette spécification.
Cette section décrit la conception du vocabulaire de balisage de XLink.
Le balisage des liens doit être reconnu de manière fiable par les applications XLink afin que ceux-ci soient traversés et pris en charge correctement. XLink emploie le mécanisme décrit dans la recommandation des espaces de nommage XHTML [XML Names] pour la reconnaissance des structures dans le vocabulaire XLink.
L'espace de nommage XLink défini par cette spécification a l'URI suivant :
http://www.w3.org/1999/xlink |
Comme indiqué par [XML Names], l'utilisation des éléments et attributs XLink requiert
la déclaration de l'espace de nommage XLink. Par exemple, la déclaration suivante permettraient l'usage du
préfixe xlink au sein de l'élément « monElement » pour représenter l'espace de nommage XLink :
<monElement xmlns:xlink="http://www.w3.org/1999/xlink"> ... </monElement> |
Remarque :
La plupart des exemples de code dans cette spécification ne font pas apparaître de déclaration d'espace
de nommage XLink. On utilise tout du long le préfixe xlink qui tient lieu de déclaration de
l'espace de nommage XLink sur l'élément dans la portée duquel l'attribut marqué de la sorte apparaît
(sur le même élément qui porte l'attribut ou sur un certain élément ancêtre), que la
déclaration d'espace de nommage XLink soit présente ou non dans l'exemple.
L'espace de nommage XLink dispose d'attributs globaux à utiliser sur les éléments qui se
trouvent dans un espace de nommage arbitraire. Les attributs globaux sont type, href,
role, arcrole, title, show,
actuate, label, from et to.
Les auteurs des documents utilisent les attributs globaux XLink pour faire que les éléments, dans leur propre espace de nommage
ou même dans un espace de nommage qu'ils ne contrôlent pas, soient reconnaissables en tant qu'éléments XLink.
L'attribut type indique le type de l'élément XLink ("simple", "extended", "locator", "arc", "resource" ou "title") ;
le type de l'élément dicte les contraintes imposées par XLink que l'élément
doit respecter ainsi que le comportement des applications XLink amnées à rencontrer l'élément.
Voici un exemple avec un élément « renvoi », issu d'un espace de nommage non-XLink, ayant des
attributs globaux XLink :
<mon:renvoi xmlns:mon="http://exemple.com/" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="etudiants.xml" xlink:role="http://www.exemple.com/props_lien/liste_etudiants" xlink:title="Liste des étudiants" xlink:show="new" xlink:actuate="onRequest"> Liste courante des étudiants </mon:renvoi> |
L'utilisation d'attributs globaux requiert toujours l'emploi d'un préfixe d'espace de nommage sur les attributs individuels
et l'emploi de l'attribut type sur l'élément.
Alors que les attributs XLink sont considérés globaux en vertu de leur utilisation du mécanisme de
l'espace de nommage, leurs combinaisons admises sur un élément XLink dépendent essentiellement
de l'attribut spécial type (voir « 5.3 L'attribut de type de l'élément XLink (type) »
pour plus d'informations) de l'éléments sur lequel elles apparaissent. Les remarques sur les contraintes de conformité
dans cette spécification précisent leurs configurations d'utilisation admises. Voici un résumé des types
d'élément (colonnes) sur lesquels les attributs globaux (rangées) sont admis, indiquant si une valeur est
requise (R) ou optionnelle (O) :
simple | extended | locator | arc | resource | title |
|
|---|---|---|---|---|---|---|
type | R | R | R | R | R | R |
href |
O | R | ||||
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 |
(Voir également « B Exemple de DTD » pour un DTD non-normatif qui illustre les configurations d'attributs admises).
Cette spécification emploie la convention « élément de type xxx »
pour se référer aux éléments qui doivent adhérer
à l'ensemble de contraintes nommé associé à un élément XLink, qu'importe le nom réel
de l'élément. Par exemple, un « élément de type locator » se
rapporterait à tous les éléments suivants :
<locator xlink:type="locator" ... /> <loc xlink:type="locator" ... /> <my:pointer xlink:type="locator" ... /> |
Les divers types d'élément XLink prennent une signification particulière, qui est dictée par cette spécification, quand ils apparaissent comme enfants directs d'autres types d'éléments XLink. Voici un résumé des types d'élément enfant qui jouent un rôle significatif pour un type d'élément parent donné. (Les autres combinaisons n'ont pas de signification pour XLink).
| Type du parent | Types enfants significatifs |
|---|---|
simple | none |
extended | locator, arc, resource, title |
locator | title |
arc | title |
resource | none |
title | none |
L'utilisation de XLink peut impliquer l'emploi d'un grand nombre d'attributs pour la fourniture d'informations de lien importantes.
Au cas où les valeurs des attributs XLink désirés resteraient inchangées entre les instances individuelles
dans tous les documents d'un certain type, les valeurs par défaut des attributs (fixes ou non) peuvent
être ajoutée à un DTD, de sorte que les attributs n'aient
pas besoin d'apparaître dans les balises ouvrantes des éléments. Par exemple, si des valeurs par défaut
étaient fournies pour les attributs xmlns:xlink, xmlns:my, type, show,
et actuate dans l'exemple en introduction de « 4 La conception du balisage XLink »,
celui-ci deviendrait comme suit :
<mon:renvoi xlink:href="etudiants.xml" xlink:role="http://www.exemple.com/props_lien/liste_etudiants" xlink:title="Liste des étudiants"> Liste courante des étudiants </mon:renvoi> |
Les ensembles d'information, créés sous le contrôle d'un DTD, ont toutes les valeurs des attributs qui y sont insérées.
Cette spécification ne définit les attributs et valeurs d'attribut que dans l'espace de nommage XLink. Il n'y a aucune restriction à utiliser des attributs non-XLink en même temps que des attributs XLink. En outre, la plupart des attributs XLink sont optionnels et le choix d'un lien simple ou d'un lien étendu est laissé au concepteur du balisage ou au créateur du document, de sorte qu'un DTD, utilisant les fonctionnalités de XLink, n'a pas besoin d'utiliser ou de déclarer le jeu entier des attributs XLink. Finalement, alors que cette spécification identifie les contraintes minimum sur le balisage XLink, les DTD utilisant XLink sont libres de resserrer ces contraintes. L'utilisation de XLink n'absout pas un document valide de se conformer aux contraintes exprimées dans le DTD qui le dirige.
Voici un exemple avec un élément « renvoi » ayant à la fois des attributs XLink et non-XLink :
<mon:renvoi xmlns:mon="http://exemple.com/" mon:miseAjour="2000-06-10" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="etudiants.xml"> Liste courante des étudiants </mon:renvoi> |
Comme les attributs globaux XLink requièrent l'utilisation de préfixes d'espace de nommage, les liens non-XLink
dans les documents existants ne font en général pas office de structures XLink conformes tels quels, même si
on utilise une valeur d'attribut par défaut. Par exemple, XHTML
dispose d'un élément a avec un attribut href, mais comme l'attribut
est local et attaché à l'élément a dans l'espace de nommage
XHTML, il ne s'agit pas du même attribut global
xlink:href dans l'espace de nommage XLink.
XLink offre deux sortes de liens :
Les liens étendus apportent toutes les fonctionnalités XLink, tels que les arcs entrants et tiers, ainsi que des liens ayant un nombre arbitraire de ressources participantes. En conséquence, leur structure peut être très complexe, comprenant les éléments qui désignent des ressources distantes, les éléments qui contiennent des ressources locales, les éléments qui spécifient les règles de traversée des arcs et les éléments qui spécifient des ressources lisibles par un humain et les titres des arcs.
XLink définit un moyen pour donner au lien étendu une sémantique spéciale pour trouver les bases de liens ; utilisé de cette façon, le lien étendu aide l'application XLink dans le traitement d'autres liens.
Les liens simples offrent une syntaxe raccourcie pour une sorte de lien commune, un lien sortant dans lequel participent exactement
deux ressources (catégorie dans laquelle se rangent les liens de style HTML
A et IMG). Comme les liens simples offrent moins de fonctionnalités que
les liens étendus, ils n'ont pas de structure interne.
Bien que les liens simples forment conceptuellement un sous-ensemble des liens étendus, leur syntaxe est différente. Par exemple, pour convertir un lien simple en lien étendu, plusieurs changements structuraux seraient nécessaires.
Les sections suivantes définissent les éléments et attributs XLink.
extended)[Définition : Un lien étendu est un lien qui associe un nombre arbitraire de ressources. Les ressources participantes peuvent être représentées par toute combinaison de ressources distantes et locales].
La seule sorte de lien capable d'avoir des arcs entrants et tiers est le lien étendu. Habituellement, les éléments de liaison étendue sont stockés séparément des ressources qu'ils associent (par exemple, dans des documents entièrement distincts). Ainsi, les liens étendus sont importants pour les situations dans lesquelles les ressources participantes sont en lecture seule, ou dans lesquelles il est coûteux de les modifier et de les mettre à jour mais économique de modifier et mettre à jour un élément de liaison séparé, ou dans lesquelles encore les ressources sont dans des formats sans une gestion native des liens incorporés (comme dans nombre de formats multimédias).
Le diagramme suivant montre un lien étendu qui associe cinq ressources distantes. Il pourrait s'agir, par exemple, d'informations concernant la charge de cours d'un étudiant : une ressource décrivant l'étudiant, une autre décrivant le conseiller universitaire de l'étudiant, deux ressources représentant les cours auxquels l'étudiant assiste et la dernière un cours en auditeur libre.
Sans le lien étendu, les ressources pourraient être entièrement dissociées ; par exemple, elles pourraient se trouver dans cinq documents séparés. Les lignes émanant du lien étendu représentent les associations que celui-ci crée entre les ressources. Cependant, notez que les lignes n'ont pas de directionnalité. La directionnalité est exprimée par des règles de traversée ; sans ces règles, les ressources sont associées dans n'importe quel ordre, sans implication sur l'accès ou non aux ressources individuelles ni sur la manière dont on y a accès.
Le diagramme suivant montre un lien étendu qui associe cinq ressources distantes et une ressource locale (un élément spécial au sein de l'élément de lien étendu). Il pourrait s'agir du même exemple de charge de cours décrit précédemment, auquel s'ajoute la note moyenne de l'étudiant stockée localement. Encore une fois, les lignes représentent la simple association des six ressources, sans que les directions des traversées ni les comportements ne soient impliqués.
Le type d'élément XLink des liens étendus peut être tout élément ayant un attribut
dans l'espace de nommage XLink nommé type avec la valeur "extended".
L'élément de type extended peut contenir un mélange
des éléments suivants, dans n'importe quel ordre, accompagnant éventuellement d'autres contenus et balisages :
les éléments de type locator qui adressent les ressources distantes participant au lien ;
les éléments de type arc qui fournissent les règles de traversée entre les ressources participant au lien ;
les éléments de type title qui fournissent les labels, lisibles par un humain, pour le lien ;
les éléments de type resource qui fournissent les ressources locales partipant au lien.
Il n'est pas erroné pour un élément de type extended d'associer moins de deux ressources. Si le
lien n'a qu'une seule ressource participante, ou pas du tout, on ne peut simplement pas le traverser. Un tel lien peut toujours
trouver une utilité, par exemple, pour associer des propriétés à une seule ressource au moyen des
attributs XLink, ou pour fournir un paramètre fictif [ndt. placeholder], qui pourra être éventuellement peuplé par des informations de lien.
Les sous-éléments des types simple ou extended, n'importe où dans un
élément parent de type extended, n'ont aucune signification pour XLink. Les sous-éléments
des types locator, arc ou resource, qui ne sont pas les enfants directs d'un élément
de type extended, n'ont pas non plus de signification pour XLink.
L'élément de type extended peut avoir les attributs
sémantiques role et title (voir « 5.5 Les attributs sémantiques (role, arcrole et title) »).
Ceux-ci apportent une information sémantique concernant le lien en tant que tout ; l'attribut role
indique une propriété que possède le lien en entier, et l'attribut title
indique une description, lisible par un humain, du lien en entier. Si d'autres attributs XLink sont présents sur l'élément,
ils n'ont aucun rapport avec le lien pour XLink. Si un attribut title et un ou plusieurs éléments de
type title sont à la fois présents, ils n'ont aucun rapport pour XLink ; auquel cas une application
de plus haut niveau bâtie sur XLink spécifiera vraisemblablement un traitement approprié (par exemple, la
priorité).
extendedVoici l'ensemble non-normatif des déclarations d'un élément de type extended et de ses sous-éléments.
Des parties de cet exemple seront réutilisées au long de cette spécification. Remarquez que l'attribut
type et certains autres attributs ont des valeurs par défaut définies dans le
DTD, afin de mettre en évidence les attributs qui changent d'une
instance à l'autre.
<!ELEMENT chargedecours ((infobulle|personne|cours|mg|go)*)>
<!ATTLIST chargedecours
xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
xlink:type (extended) #FIXED "extended"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED>
<!ELEMENT infobulle ANY>
<!ATTLIST infobulle
xlink:type (title) #FIXED "title"
xml:lang CDATA #IMPLIED>
<!ELEMENT personne EMPTY>
<!ATTLIST personne
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT cours EMPTY>
<!ATTLIST cours
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:role CDATA #FIXED "http://www.exemple.com/props_lien/cours"
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>
<!-- mg = "moyenne générale" -->
<!ELEMENT mg ANY>
<!ATTLIST mg
xlink:type (resource) #FIXED "resource"
xlink:role CDATA #FIXED "http://www.exemple.com/props_lien/mg"
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>
|
Voici ensuite à quoi les éléments XHTML utilisant ces déclarations pourraient ressembler.
<chargedecours>
<infobulle>Charge de cours pour Pat Jones</infobulle>
<personne
xlink:href="etudiants/patjones62.xml"
xlink:label="etudiant62"
xlink:role="http://www.exemple.com/props_lien/etudiant"
xlink:title="Pat Jones" />
<personne
xlink:href="profs/jaysmith7.xml"
xlink:label="prof7"
xlink:role="http://www.exemple.com/props_lien/professeur"
xlink:title="Dr. Jay Smith" />
<!-- autres ressources distantes pour les professeurs, assistants de cours, etc. -->
<cours
xlink:href="cours/cs101.xml"
xlink:label="SI-101"
xlink:title="Sciences Informatiques 101" />
<!-- autres ressources distantes pour les cours, séminaires, etc. -->
<mg xlink:label="PatJonesMG">3.5</mg>
<go
xlink:from="etudiant62"
xlink:to="PatJonesMG"
xlink:show="new"
xlink:actuate="onRequest"
xlink:title="Moyenne générale de Pat Jones" />
<go
xlink:from="SI-101"
xlink:arcrole="http://www.exemple.com/props_lien/auditeur"
xlink:to="etudiant62"
xlink:show="replace"
xlink:actuate="onRequest"
xlink:title="Pat Jones, assistant en auditeur libre" />
<go
xlink:from="etudiant62"
xlink:arcrole="http://www.exemple.com/props_lien/conseiller"
xlink:to="prof7"
xlink:show="replace"
xlink:actuate="onRequest"
xlink:title="Dr. Jay Smith, conseiller" />
</chargedecours>
|
resource)Le lien étendu désigne ses ressources locales participantes par le biais de sous-éléments spéciaux qui apparaissent au sein du lien étendu. Le sous-élément entier, avec tout ce qu'il contient, forme la ressource locale.
L'élément XLink pour une ressource locale est constitué par tout élément ayant un attribut
type dans l'espace de nommage XLink avec la valeur "resource".
L'élément de type resource peut avoir n'importe quel contenu ;
quel que soit ce contenu, il n'a aucune relation spécifiée par XLink avec le lien. Un élément de type resource
peut n'avoir aucun contenu ; au cas où cet élément sert de ressource de départ, dont on attend qu'elle soit traversée
à la demande, les applications XLink interactives généreront habituellement un certain contenu afin de donner
à l'utilisateur un moyen d'initier la traversée. Si l'élément de type resource a tout autre
chose qu'un élément de type extended comme parent, alors cet élément n'a aucune signification
pour XLink.
L'élément de type resource peut avoir les attributs
sémantiques role et title
(voir « 5.5 Les attributs sémantiques (role, arcrole et title) »
et l'attribut de traversée label (voir « 5.7 Les attributs de traversée (label, from et to)) ».
Les attributs sémantiques livrent les informations concernant la ressource en termes génériques, hors du contexte
de l'arc particulier qui mène à celle-ci ; l'attribut role indique une propriété
de la ressource et l'attribut title indique une description de la ressource, lisible par un humain.
L'attribut label fournit à un élément de type arc un moyen pour se référer
à cette ressource dans la création d'un arc de traversée.
resourceVoici l'ensemble non-normatif des déclarations d'un élément de type resource.
<!ELEMENT mg ANY> <!ATTLIST mg xlink:type (resource) #FIXED "resource" xlink:role CDATA #FIXED "http://www.exemple.com/props_lien/mg" xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> |
Voici ensuite à quoi l'élément XHTML utilisant ces déclarations pourrait ressembler.
<mg xlink:label="PatJonesMG">3.5</gpa> |
locator)Le lien étendu indique les ressources distantes participant au lien par le biais d'éléments localisateurs.
L'élément XLink pour un localisateur est constitué par tout élément ayant un attribut type
dans l'espace de nommage XLink avec la valeur "locator".
L'élément de type locator peut avoir n'importe quel contenu.
Mis à part les éléments de type title qui en sont des enfants directs
(voir « 5.1.4 Les titres des liens étendus, des localisateurs et des arcs (élément de type title) »),
le contenu présent, quel qu'il soit, n'a aucune relation avec le lien pour XLink. Si l'élément de type locator
contient des éléments XLink imbriqués, ces éléments contenus n'ont aucune relation avec leur parent
pour XLink. Si l'élément de type locator a tout autre chose qu'un élément de type extended
comme parent, alors cet élément de type locator n'a aucune signification pour XLink.
Contrainte : Les attributs sur l'élément localisateur
L'élément de type locator doit avoir l'attribut localisateur
(voir « 5.4 L'attribut localisateur (href) »).
L'attribut localisateur (href) doit avoir reçu une valeur.
L'élément de type locator peut avoir les attributs
sémantiques role et title
(voir « 5.5 Les attributs sémantiques (role, arcrole et title) »
et l'attribut de traversée label (voir « 5.7 Les attributs de traversée (label, from et to)) ».
L'attribut localisateur fournit une référence d'URI
qui identifie une ressource distante. Les attributs sémantiques livrent des informations concernant la ressource en termes génériques,
hors du contexte de l'arc particulier qui mène à celle-ci ; l'attribut role
indique une propriété de la ressource et l'attribut title indique une description de la
ressource, lisible par un humain. L'attribut label fournit à un élément de type arc
un moyen pour se référer à cette ressource dans la création d'un arc de traversée.
Remarque :
L'élément de type locator ne constitue pas en lui-même un lien simplement parce qu'il a un
attribut localisateur (href) ; à la différence d'un élément de type simple,
il ne crée aucune association qui soit régie par XLink entre lui-même et la ressource référencée.
locatorVoici un ensemble non-normatif de déclarations pour un élément de type locator.
<!ELEMENT personne EMPTY> <!ATTLIST personne xlink:type (locator) #FIXED "locator" xlink:href CDATA #REQUIRED xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> <!ELEMENT cours EMPTY> <!ATTLIST cours xlink:type (locator) #FIXED "locator" xlink:href CDATA #REQUIRED xlink:role CDATA #FIXED "http://www.exemple.com/props_lien/cours" xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> |
Voici ensuite à quoi pourraient ressembler les éléments XHTML utilisant ces déclarations.
<personne xlink:href="etudiants/patjones62.xml" xlink:label="etudiant62" xlink:role="http://www.exemple.com/props_lien/etudiant" xlink:title="Pat Jones" /> <personne xlink:href="profs/jaysmith7.xml" xlink:label="prof7" xlink:role="http://www.exemple.com/props_lien/professeur" xlink:title="Dr. Jay Smith" /> <cours xlink:href="cours/cs101.xml" xlink:label="SI-101" xlink:title="Sciences Informatiques 101" /> |
arc)Le lien étendu peut indiquer les règles de traversée entre ses ressources participantes par le biais d'une collection d'éléments arcs optionnels.
L'élément XLink pour un arc est constitué par tout élément ayant un attribut type
dans l'espace de nommage XLink avec la valeur "arc".
L'élément de type arc peut avoir n'importe quel contenu.
Mis à part les éléments de type title qui en sont des enfants directs
(voir « 5.1.4 Les titres des liens étendus, des localisateurs et des arcs (élément de type title) »),
le contenu présent, quel qu'il soit, n'a aucune relation avec le lien pour XLink. Si un élément de type arc
a tout autre chose qu'un élément de type extended comme parent, alors cet élément de type arc
n'a aucune signification pour XLink.
L'élément de type arc peut avoir les attributs de
traversée from et to (voir « 5.7 Les attributs de traversée (label, from et to)) »,
les attributs de comportement show et actuate
(voir « 5.6 Les attributs de comportement (show et actuate) »)
et les attributs sémantiques arcrole et title
(voir « 5.5 Les attributs sémantiques (role, arcrole et title) ».
Les attributs de traversée définissent le cheminement désiré entre les couples de ressources qui
participent au même lien, dans lesquels les ressources sont identifiées par la valeur de leur attribut label.
L'attribut from définit les ressources à partir desquelles la traversée
peut être initiée, c'est-à-dire les ressources de départ,
alors que l'attribut to définit les ressources vers lesquelles la traversée
peut avoir lieu, c'est-à-dire les ressources d'arrivée.
Les attributs de comportement spécifient le comportement désiré pour les applications XLink lors de la traversée
vers la ressource d'arrivée.
Les attributs sémantiques décrivent la signification de la ressource d'arrivée de l'arc par rapport à
sa ressource de départ. L'attribut arcrole correspond à la notion de propriété
de [RDF], dans laquelle on peut interpréter
le rôle comme déclarant « ressource-de-départ POSSÈDE rôle-de-l'arc ressource-d'arrivée ».
Ce rôle contextuel peut différer de la signification d'une ressource d'arrivée quand celle-ci est considérée
hors du contexte de cet arc particulier. Par exemple, une ressource pourrait représenter de manière générique
une « personne », mais dans le contexte d'un arc particulier elle pourrait avoir le rôle de « mère »
et dans le contexte d'un autre arc le rôle de « fille ».
Quand la même ressource fait office de ressource de départ dans plusieurs arcs (que ce soit pour un seul lien ou bien pour de nombreux liens), le comportement de la requête de traversée n'est pas contraint par cette spécification, mais les applications interactives ont le loisir de produire un menu local [ndt. pop-up menu] qui liste les arcs ou les titres des liens concernés.
Le diagramme suivant montre un lien étendu qui associe cinq ressources distantes et fournit les règles pour la traversée
entre celles-ci. Tous les arcs spécifiés sont des arcs tiers ; c'est-à-dire, les arcs interviennent exclusivement
entre des ressources distantes. Les lignes non-directionnelles en trait plein indiquent, comme auparavant, que le lien associe les
cinq ressources ; les nouvelles flèches en pointillés indiquent les règles de traversée fournies par
le lien. Notez que certaines ressources partagent la même valeur pour l'attribut label.
Ce diagramme reflète les arcs de traversée directionnels créés par le paramétrage suivant, selon lequel les « A » comme le « C » sont autorisés à initier une traversée vers tous les « B ». Comme certains arcs apparaissent sur plusieurs ressources, chaque spécification d'arc crée immédiatement plusieurs arcs de traversée potentiels :
<go xlink:type="arc" xlink:from="A" xlink:to="B" /> <go xlink:type="arc" xlink:from="C" xlink:to="B" /> |
Comme autre exemple, supposons un lien étendu contenant cinq localisateurs dont, pour l'attribut label, deux ont la valeur "parent" et trois la valeur "enfant" :
<lienEtendu 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="enfant" xlink:title="e1" /> <loc xlink:type="locator" xlink:href="..." xlink:label="enfant" xlink:title="e2" /> <loc xlink:type="locator" xlink:href="..." xlink:label="enfant" xlink:title="e3" /> ... <!-- les éléments de type arc viennent ici --> </lienEtendu> |
La déclaration suivante spécifie la traversée à partir des ressources parentes vers les ressources enfants, ce qui comprend toutes celles parmi p1-e1, p1-e2, p1-e3, p2-e1, p2-e2 et p2-e3:
<go xlink:type="arc" xlink:from="parent" xlink:to="enfant" /> |
Si aucune valeur n'est donnée aux attributs from ou to, la valeur
manquante est censée signifier tous les labels placés sur les éléments de type locator
contenu par l'élément de type extended concerné. Par exemple, ce qui suit spécifie les
traversées partant des parents vers les enfants et aussi partant des enfants vers les enfants, ce qui comprend toutes celles
parmi p1-e1, p1-e2, p1-e3, p2-e1, p2-e2, p2-e3, e1-e1, e1-e2, e1-e3, e2-e1, e2-e2, e2-e3, e3-e1, e3-e2 et e3-e3 :
<go xlink:type="arc" xlink:to="enfant" /> |
Dans ce cas, remarquez que les règles de traversée comprennent les arcs partant de certaines ressources vers d'autres ressources ayant le même label (d'enfants vers d'autres enfants), ainsi que partant de certaines ressources vers elles-mêmes (d'un enfant vers lui-même) ; il ne s'agit pas d'une erreur.
Si aucun élément de type arc n'est présent dans le lien étendu, alors, par extension, les
valeurs manquantes des attributs from et to sont interprétées
comme représentant tous les labels dans ce lien. Cela équivaudrait à la spécification de traversée suivante :
<go xlink:type="arc" /> |
Quand plusieurs localisateurs ont le même label, le jeu des localisateurs avec ce même label doivent être compris comme des localisateurs individuels, plutôt que comme se référant à une ressource composée ; le comportement de traversée d'un tel lien pourrait être le même que celui d'un lien dans lequel tous les localisateurs ont des rôles différents et les arcs concernés sont spécifiés pour produire les couples de traversée identiques.
Si les règles de traversée des arcs d'un lien étendu laissent de côté des couples de traversée possibles, alors XLink ne définit pas de traversée pour ces couples. Une application de plus haut niveau peut effectuer des traversées qui ne soient pas dirigées par XLink ; par exemple, un processus de vérification des liens pourrait traverser tous les couples de ressources disponibles.
Contrainte : Pas de duplication des arcs
Chaque élément de type arc doit posséder un
couple de valeurs from et to qui ne répète pas les valeurs
from et to (respectivement) d'un quelconque élément arc
dans le même lien étendu ; c'est-à-dire, chaque couple du lien doit
être unique.
arcVoici l'ensemble non-normatif des déclarations d'un élément de type 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>
|
Voici ensuite à quoi pourrait ressembler les éléments XHTML utilisant ces déclarations.
<go xlink:from="etudiant62" xlink:to="PatJonesMG" xlink:show="new" xlink:actuate="onRequest" xlink:title="Moyenne générale de Pat Jones" /> <go xlink:from="SI-101" xlink:arcrole="http://www.exemple.com/props_lien/auditeur" xlink:to="etudiant62" xlink:show="replace" xlink:actuate="onRequest" xlink:title="Pat Jones, assistant en auditeur libre" /> <go xlink:from="etudiant62" xlink:arcrole="http://www.exemple.com/props_lien/conseiller" xlink:to="prof7" xlink:show="replace" xlink:actuate="onRequest" xlink:title="Dr. Jay Smith, conseiller" /> |
title)Les éléments de type extended, locator et arc peuvent
avoir l'attribut title (pour des précisions, voir
« 5.5 Les attributs sémantiques (role, arcrole et title) »).
Cependant, ceux-ci peuvent également avoir une collection d'un ou plusieurs
éléments de type title. Ces éléments sont utiles, par exemple, pour les cas où
les informations des labels, lisibles par un humain, nécessitent un balisage en élément supplémentaire,
ou quand plusieurs titres sont nécessaires. Une motivation commune pour l'utilisation de l'élément de type title
est la prise en compte de l'internationalisation et de la localisation. Par exemple, un balisage du titre pourrait être
nécessaire dans des contextes bi-directionnels ou dans les langues d'Asie de l'Est, et plusieurs titres pourraient être
nécessaires pour les différentes versions des langues d'un titre.
L'élément XLink pour un titre est constitué par tout élément ayant un attribut type
dans l'espace de nommage XLink avec la valeur "title".
L'élément de type title peut avoir n'importe quel contenu.
Si un élément de type title contient des éléments XLink imbriqués, ces éléments
contenus n'ont aucune relation pour XLink avec le lien parent contenant le titre. Si un élément de type title
a autre chose que des éléments de type extended, locator ou arc comme parent,
alors l'élément de type title n'a aucune signification pour XLink.
titleVoici l'ensemble non-normatif des déclarations d'un élément de type title. L'élément
possède un attribut xml:lang, qui peut s'utiliser en conjonction
avec le paramétrage d'un serveur, ou toute information contextuelle, pour la détermination du titre à présenter.
<!ELEMENT nomconseiller (name)> <!ATTLIST nomconseiller xlink:type (title) #FIXED "title" xml:lang CDATA #IMPLIED> <!ELEMENT nom (honorifique?, prenom, famille)> <!-- D'autres déclarations pour les noms --> |
Voici ensuite à quoi pourrait ressembler les éléments XHTML utilisant ces déclarations.
<conseiller xlink:href="profs/jaysmith7.xml" ...>
<nomconseiller xml:lang="en">
<nom>
<honorifique>Dr.</honorifique>
<prenom>Jay</prenom>
<famille>Smith</famille>
</nom>
</nomconseiller>
</conseiller>
|
Pour qu'une application XLink puisse traverser d'une ressource de départ vers une ressource d'arrivée, elle a besoin de localiser à la fois la ressource de départ et le lien. La localisation des deux morceaux ne pose aucun problème dans le cas d'un arc sortant parce que la ressource de départ est soit l'élément de liaison lui-même, soit un enfant de l'élément de liaison. Par contre, dans les cas des arcs entrants et tiers, l'application XLink doit pouvoir trouver les deux morceaux d'une manière ou d'une autre.
Dans l'exemple avec la charge de cours, les liens étendus peuvent associer des couples de ressources distantes représentant des étudiants et des cours. Afin que le système puisse charger et présenter une « ressource étudiant » (telles qu'une description et une photo de cette personne), de manière à offrir une traversée vers une information relative (par exemple, en permettant à l'utilisateur de cliquer sur le nom de l'étudiant pour traverser vers les informations concernant les cours auxquels l'étudiant est inscrit), ce système a besoin de localiser et d'utiliser les liens étendus contenant l'association.
Les bases de liens sont souvent employées pour faciliter la gestion des liens,
en rassemblant un certain nombre d'éléments de liaison relatifs. XLink fournit un moyen d'instruire les applications
XLink pour qu'elles accèdent aux bases de liens potentiellement pertinentes. Cette instruction prend la forme de la spécification
d'un arc (que ce soit un arc explicite dans un lien étendu, ou bien un arc implicite dans un lien simple) dont l'attribut
arcrole a la valeur suivante :
http://www.w3.org/1999/xlink/properties/linkbase |
Contrainte : Les bases de liens doivent être au format XHTML
Toute base de liens, spécifiée comme ressource d'arrivée d'un arc avec cette valeur spéciale, doit être un document XHTML.
(Les applications XLink peuvent également utiliser d'autres moyens pour localiser et traiter les bases de liens supplémentaires).
La gestion d'un arc de base de liens est très semblable à la gestion d'un arc normal, mis à part le fait que la traversée impose le chargement de la ressource d'arrivée (la base de liens) afin d'en extraire les liens pour une utilisation ultérieure plutôt que de la présenter à l'utilisateur ou d'y effectuer un quelconque traitement. Sa gestion est également particulière dans la mesure où les applications XLink doivent interrompre la traversée des arcs de base de liens sur demande de l'utilisateur.
Plus spécifiquement, lors du chargement d'un arc de base de liens, l'application XLink devrait conserver une trace de la nature de la ressource de départ. Toutes les fois où le document contenant cette ressource de départ est chargé et la traversée de la base de liens est mise en fonction, l'application devrait accéder à la base de liens et extraire tous les liens étendus qui s'y trouvent. Au cas où la ressource extraite est une portion de document XHTML complet, telles qu'une étendue ou étendue de chaîne [ndt. range or string range], seuls ceux des liens étendus qui sont entièrement contenus dans la portion extraite devraient être rendus disponibles.
La synchronisation [ndt. timing] de la traversée de l'arc de base de liens dépend de la
valeur de l'attribut actuate sur l'arc. Par exemple, si la valeur est "onLoad", alors la base de liens est
chargée et les liens en sont extraits dès que la ressource de départ a été chargée.
Toute valeur de l'attribut show sur 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 s'enchaîner en vertu du fait que chacune d'elles peut constituer la ressource de départ d'une autre base de liens. L'application qui interprète l'arc de base de liens initial peut choisir de limiter le nombre des étapes traitées dans l'enchaînement.
L'application devrait maintenir la liste des liens étendus qui ont été ramenés à la suite du traitement d'une base de liens, et elle ne devrait pas ramener de ressources ou de liens en double au cas où il existerait une dépendance circulaire. Pour faciliter le traitement XLink, les créateurs de document peuvent vouloir définir les arcs de base de liens au début du document.
Voici l'ensemble non-normatif des déclarations d'un lien étendu spécialisé dans la fourniture d'arcs de base de liens :
<!ELEMENT baseschargees ((ressourcedepart|basedeliens|charger)*)>
<!ATTLIST baseschargees
xlink:type (extended) #FIXED "extended">
<!ELEMENT ressourcedepart EMPTY>
<!ATTLIST ressourcedepart
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT basedeliens EMPTY>
<!ATTLIST basedeliens
xlink:type (locator) #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:label NMTOKEN #IMPLIED>
<!ELEMENT charger EMPTY>
<!ATTLIST charger
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>
|
Voici ensuite à quoi pourrait ressembler l'élément XHTML utilisant ces déclarations. Ceci indiquerait, quand le document d'une spécification a été chargé, que la base de liens remplies des annotations la concernant devrait automatiquement être chargée en même temps, ce qui peut nécessiter une éventuelle restitution à nouveau du document entier de la spécification pour en révéler toutes les régions qui servent de ressources de départ pour les liens trouvés dans la base de liens.
<baseschargees> <ressourcedepart xlink:label="spec" xlink:href="spec.xml" /> <basedeliens xlink:label="basedeliens" xlink:href="basedeliens.xml" /> <charger xlink:from="spec" xlink:to="basedeliens" actuate="onLoad" /> </baseschargees> |
Voici maintenant à quoi pourrait ressembler l'élément XHTML utilisant ces déclarations, si le chargement de la base de liens était initié à la demande. Cette fois, la ressource de départ est constituée des mots « Cliquez ici pour révéler l'annotation. ». Si la ressource de départ était représentée par le document entier, comme dans l'exemple ci-dessus, un comportement raisonnable pour permettre à l'utilisateur de lancer la traversée serait de produire une boîte de dialogue de confirmation.
<baseschargees>
<ressourcedepart
xlink:label="spec"
xlink:href="spec.xml#string-range(//*,'Cliquez ici pour révéler l'annotation.')" />
<basedeliens xlink:label="basedeliens" xlink:href="basedeliens.xml" />
<charger xlink:from="spec" xlink:to="basedeliens" actuate="onRequest" />
</baseschargees>
|
simple)[Définition : Le lien simple associe exactement deux ressources, l'une locale et l'autre distante, avec un arc allant de la première vers la dernière. Le lien simple est donc toujours un lien sortant].
La destination d'un lien simple c'est d'être un raccourci commode du lien étendu équivalent. Un seul élément
de liaison simple combine les fonctions de base d'un élément de type extended, d'un élément
de type locator, d'un élément de type arc et d'un élément de type resource.
Le diagramme suivant montre les caractéristiques du lien simple ; il associe une ressource locale et une ressource distante, et il fournit implicitement un seul arc de traversée à partir de la ressource locale vers la ressource distante. Cela pourrait représenter, par exemple, le nom d'un étudiant apparaissant dans le texte qui, quand il est cliqué, conduit vers des informations le concernant.

On pourrait représenter un lien simple sous la forme d'un lien étendu de la manière suivante :
<lienetudiant xlink:type="extended">
<ressource
xlink:type="resource"
xlink:label="local">Pat Jones</ressource>
<localisateur
xlink:type="locator"
xlink:href="..."
xlink:label="distant"
xlink:role="..."
xlink:title="..." />
<go
xlink:type="arc"
xlink:from="local"
xlink:to="distant"
xlink:arcrole="..."
xlink:show="..."
xlink:actuate="..." />
</lienetudiant>
|
Le lien simple combine toutes les caractéristiques ci-dessus (sauf celles des types et des labels) en un seul élément. Dans les cas où seul ce sous-ensemble de caractéristiques est nécessaire, l'élément de liaison simple XLink est disponible comme alternative à l'élément de liaison étendue. Les caractéristiques qui manquent aux liens simples sont les suivantes :
La mise à disposition d'un nombre arbitraire de ressources locales et distantes ;
la spécification d'un arc allant de la ressource distante du lien vers la ressource locale ;
l'association d'un titre au seul arc rigide [ndt. single hardwired arc] ;
l'association d'un rôle ou d'un titre à la ressource locale ;
l'association d'un rôle ou d'un titre au lien en tant qu'ensemble.
L'élément XLink de lien simple est constitué par tout élément ayant un attribut
type dans l'espace de nommage XLink avec la valeur "simple".
Le lien simple équivalant au lien étendu ci-dessus pourrait être le suivant :
<lienetudiant xlink:href="...">Pat Jones</lienetudiant> |
L'élément de type simple peut avoir n'importe quel contenu.
L'élément de type simple lui-même, en même temps que l'ensemble de son contenu, forme la
ressource locale du lien, comme s'il s'agissait d'un élément de type resource. Si un élément
de type simple contient des éléments XLink imbriqués, ces éléments contenus n'ont
aucune relation, pour XLink, avec le lien parent. Un élément de type simple peut ne pas avoir de contenu ;
pour les cas où le lien est censé être traversé à la demande, les applications XLink interactives
produiront généralement un contenu de façon à fournir à l'utilisateur un moyen pour initier la traversée.
L'élément de type simple accepte effectivement l'attribut localisateur href
et les attributs sémantiques role et title des éléments de type locator,
ainsi que les attributs de comportement show et actuate et le seul attribut
sémantique arcrole des éléments de type arc.
Il n'est pas erroné que l'attribut localisateur (href) d'un élément de type simple n'ait pas de valeur.
Si aucune valeur n'est fournie, alors le lien est tout simplement non-traversable. Un tel lien peut toujours être utile, par exemple,
pour associer des propriétés à la ressource par le biais d'attributs XLink.
simpleVoici l'ensemble non-normatif des déclarations d'un élément de type simple.
<!ELEMENT lienetudiant ANY>
<!ATTLIST lienetudiant
xlink:type (simple) #FIXED "simple"
xlink:href CDATA #IMPLIED
xlink:role NMTOKEN #FIXED "http://www.exemple.com/props_lien/etudiant"
xlink:arcrole CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:show (new
|replace
|embed
|other
|none) #IMPLIED
xlink:actuate (onLoad
|onRequest
|other
|none) #IMPLIED>
|
Voici ensuite à quoi pourrait ressembler un élément XHTML utilisant ces déclarations.
..., et <lienetudiant xlink:href="etudiants/patjones62.xml">Pat Jones</lienetudiant> est très connu en dehors du syndicat des étudiants. |
type)Le type des éléments XLink est identifié par l'attribut type.
Contrainte : La valeur du type
La valeur de l'attribut type doit être fournie.
Cette valeur doit être l'une parmi "simple", "extended", "locator", "arc", "resource", "title" et "none".
Quand la valeur de l'attribut type est "none", l'élément n'a pas de signification pour XLink,
et aucun contenu ou attribut ayant à voir avec XLink n'a de relation avec l'élément pour XLink.
typeVoici la déclaration non-normative de liste d'attributs pour l'attribut type sur un élément
censé être de type simple.
<!ATTLIST xlink:simple xlink:type (simple) #FIXED "simple" ...> |
Pour un élément qui sert d'élément XLink seulement dans certaines occasions, il pourrait avoir la
déclaration suivante, dans laquelle le créateur du document donne la valeur "simple" dans certaines circonstances et
"none" dans d'autres. L'utilisation de la valeur "none" peut se révéler utile, en évitant aux applications XLink
d'avoir à vérifier la présence d'une valeur sur l'attribut href.
<!ATTLIST nomdecommande xlink:type (simple|none) #REQUIRED xlink:href CDATA #IMPLIED> |
href)L'attribut href fournit les données permettant à une application XLink de trouver une ressource (ou un fragment de ressource) distante.
On peut l'utiliser sur les éléments de type simple,
mais on doit l'utiliser sur les éléments de type locator.
La valeur de l'attribut href doit être une
référence d'URI, comme défini dans le document [IETF RFC 2396],
ou encore doit aboutir à une référence d'URI après
que la procédure d'échappement [ndt. escaping procedure] ci-dessous a été appliquée. La procédure s'applique lors
du passage de la référence d'URI à un
résolveur d'URI.
Certains caractères ne sont pas admis dans les références d'URI, même s'ils le sont dans XHTML ; les caractères non-admis comprennent tous les caractères non-ASCII, plus les caractères exclus qui sont listés dans la section 2.4 du document [IETF RFC 2396], à l'exception des caractères dièse « # », pourcentage « % » et crochets « [ » et « ] », qui ont été ré-admis par le document [IETF RFC 2732]. Les caractères non-admis doivent être échappés comme suit :
Chaque caractère non-admis est converti selon le codage de caractères UTF-8 [IETF RFC 2279], en un ou plusieurs octets ;
tous les octets correspondant à un caractère non-admis sont échappés selon le mécanisme
d'échappement des URI (c'est-à-dire convertis dans la forme
« %HH », où « HH » représente la notation hexadécimale
de la valeur d'octet) ;
le caractère original est remplacé par la séquence de caractères résultante.
Comme il n'est pas réaliste que toute application vérifie si une valeur est une référence d'URI, cette spécification suit le conseil du document [IETF RFC 2396] sur ce point et elle n'impose aucune obligation de test de conformité aux applications XLink.
Si la référence d'URI est relative, alors sa version absolue doit être calculée selon la méthode de la spécification [XML Base], avant l'utilisation de celle-ci.
Pour les localisateurs à l'intérieur des ressources XHTML, le format de l'identifiant de fragment (le cas échéant) qui est utilisé dans la référence d'URI est spécifié par la spécification XPointer [XPTR].
hrefVoici la déclaration non-normative de liste d'attributs d'un attribut href sur un élément
censé être de type simple.
<!ATTLIST liensimple xlink:href CDATA #REQUIRED ...> |
role, arcrole et title)Les attributs role, arcrole et title décrivent la signification des ressources dans le contexte d'un lien.
L'attribut role peut s'utiliser sur les éléments de type extended, simple,
locator et resource. L'attribut arcrole peut
s'utiliser sur les éléments de type arc et simple. L'attribut title
peut s'utiliser sur tous ces types d'élément.
La valeur de l'attribut role, ou arcrole,
doit être une référence d'URI, comme définie dans le document
[IETF RFC 2396], à cette exception que, si le système d'URI
admet les deux formes absolues et relatives, la partie URI proprement dite
doit être absolue. La référence d'URI
identifie une certaine ressource qui décrit la propriété voulue. Quand aucune valeur n'est donnée, alors
on ne doit pas inférer de valeur de rôle particulière. Les caractères non-admis dans les références d'URI,
les valeurs de ces attributs, doivent être codés spécialement,
comme décrit dans « 5.4 L'attribut localisateur (href) ».
L'attribut title est utilisé pour décrire la signification d'un lien ou d'une ressource
de manière lisible par un humain, au même endroit que les attributs role
ou arcrole. (Cependant, voir également « 5.1.4 Les titres des éléments étendus, des localisateurs et des arcs (élément de type title) »).
La valeur est optionnelle ; si une valeur est fournie, elle devrait contenir
une chaîne qui décrit la ressource. L'utilisation de cette information dépend fortement du type de traitement effectué.
On peut l'utiliser, par exemple, pour rendre les titres disponibles aux applications employées
par les utilisateurs ayant des déficiences visuelles, ou pour créer une table des liens, ou pour présenter un texte
d'assistance qui apparaît quand l'utilisateur laisse le pointeur de la souris immobile au-dessus d'une ressource de départ.
role et titleVoici la déclaration non-normative de liste d'attributs des attributs role et title
sur un élément censé être de type simple.
<!ATTLIST liensimple ... xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED ...> |
Voici la déclaration non-normative de liste d'attributs des attributs arcrole
et title sur un élément censé être de type arc.
<!ATTLIST go ... xlink:arcrole CDATA #IMPLIED xlink:title CDATA #IMPLIED ...> |
show et actuate)Les attributs de comportement sont show et actuate. On peut
les utiliser sur les éléments de type simple et de type arc. Sur un élément de type simple,
ils signalent les intentions de comportement pour la traversée vers la seule ressource d'arrivé distante du lien.
Sur un élément de type arc, ils signalent les intentions de comportement pour la traversée vers les
ressources d'arrivée (locales ou distantes), quelles que soient celles-ci, spécifiées par cet arc.
Les attributs show et actuate ne sont pas obligatoires. Quand on les emploie,
les applications XLink conformes devraient leur administrer le traitement spécifié
dans cette section. Il n'y aucune obligation rigide (« doit ») pour ce traitement parce que ce qui a un sens pour
une application interactive, tel un navigateur, n'en aura vraisemblablement pas pour une application non-interactive, tel un robot.
Néanmoins, toutes les applications devraient prendre en compte l'ensemble des conséquences
entraînées par le fait d'ignorer le comportement spécifié avant de suivre un autre chemin.
show et actuateVoici la déclaration non-normative de liste d'attributs des attributs show et actuate
sur un élément censé être de type simple.
<!ATTLIST liensimple
xlink:type (simple) #FIXED "simple"
...
xlink:show (new
|replace
|embed
|other
|none) #IMPLIED
xlink:actuate (onLoad
|onRequest
|other
|none) #IMPLIED
...>
|
Les applications, qui rencontrent des éléments de type arc dans les listes de bases de liens,
doivent traiter les attributs de comportement comme si leur valeur étaient
show="none" et actuate="onLoad", même si d'autres valeurs étaient spécifiées.
showL'attribut show s'utilise pour indiquer la présentation souhaitée pour la ressource d'arrivée
lors de la traversée à partir de la ressource de départ.
Contrainte : La valeur de l'attribut show
Si on donne une valeur à l'attribut show, celle-ci doit
être l'une parmi les valeurs "new", "replace", "embed", "other" et "none".
Les applications XLink conformes devraient appliquer le traitement suivant pour les
valeurs de l'attribut show :
L'application traversant vers la ressource d'arrivée devrait charger celle-ci dans une nouvelle fenêtre, ou cadre, ou panneau, ou autre contexte de présentation pertinent. L'effet est similaire à celui obtenu par le fragment HTML suivant :
<A HREF="http://www.exemple.org" target="_blank">...</A> |
L'application traversant vers la ressource d'arrivée devrait charger la ressource dans la même fenêtre, ou cadre, ou panneau, ou autre contexte de présentation pertinent, que celle où la ressource de départ a été chargée. L'effet est similaire à celui obtenu par le fragment HTML suivant :
<A HREF="http://www.exemple.org" target="_self">...</A> |
L'application traversant vers la ressource d'arrivée devrait charger la représentation de celle-ci à la place de la présentation de la ressource de départ. L'effet est similaire à celui obtenu par le fragment HTML suivant :
<IMG SRC="http://www.exemple.org/smiley.gif" ALT=":-)"> |
La présentation de la ressource de départ ne consiste pas généralement en celle du document entier ; il ne s'agirait du document entier que lorsque l'élément racine du document est un lien simple. L'incorporation [ndt. embedding] a donc typiquement un effet différent du remplacement [ndt. replacing].
Tout comme pour l'élément IMG de HTML,
l'incorporation affecte seulement la présentation des ressources concernées ; elle ne dicte pas la transformation
permanente de la ressource de départ. Autrement dit, quand un XLink incorporé est traité, le résultat de
l'habillage [ndt. style] de la ressource d'arrivée du lien fusionne avec le résultat
de l'habillage de la ressource dans lequel il est incorporé. Par contraste, quand une structure, tel un élément
XInclude [XInclude], est résolue, le code XHTML
original se transforme pour inclure le contenu référencé.
Le comportement des applications XLink conformes, lors de l'incorporation de ressources d'arrivée basées sur XHTML ([IETF RFC 2376] ou [IETF I-D XMT]), n'est pas défini dans cette version de la spécification.
La présentation des ressources incorporées est fonction de l'application.
Le comportement de l'application traversant vers la ressource d'arrivée est libre pour cette spécification. L'application devrait rechercher la présence d'un autre balisage dans le lien pour déterminer le comportement adéquat.
Le comportement de l'application traversant vers la ressource d'arrivée est libre pour cette spécification. Aucun autre balisage n'est fourni pour aider l'application à déterminer le comportement adéquat.
Si la ressource de départ, ou d'arrivée, consiste en de multiples emplacements non-contigus, telle qu'une collection d'étendues de chaîne à divers endroits dans la ressource, alors le comportement de l'application est libre. (Voir [XPTR] pour des précisions concernant la sélection de portions de documents XHTML).
Remarque :
Quelques possibilités pour le comportement d'une application vis-à-vis de ressources d'arrivée non-contiguës pourraient comprendre la mise en évidence de chaque emplacement, la production d'une boîte de dialogue qui permettrait au lecteur de choisir parmi les emplacements comme s'il s'agissait d'arcs séparés conduisant les uns vers les autres, la concaténation du contenu de tous les emplacements pour une présentation, et ainsi de suite. Le comportement d'une application vis-à-vis de ressources de départ non-contiguës pourrait comprendre la concaténation et la restitution comme une seule unité, ou la création d'un seul arc émanant de chaque portion contiguë.
actuateL'attribut actuate s'utilise pour indiquer la synchronisation voulue pour la traversée
de la ressource de départ vers la ressource d'arrivée.
Contrainte : La valeur de l'attribut actuate
Si une valeur est donnée à l'attribut actuate, celle-ci doit
être l'une parmi les valeurs "onLoad", "onRequest", "other" et "none".
Les applications XLink conformes devraient appliquer le traitement suivant pour les
valeurs de l'attribut actuate :
L'application devrait traverser vers la ressource d'arrivée immédiatement au chargement de la ressource de départ. L'effet est similaire à celui typiquement obtenu par le fragment HTML suivant, quand l'agent utilisateur est configuré pour afficher les images :
<IMG SRC="http://www.exemple.org/smiley.gif" ALT=":-)"> |
Si une seule ressource contient plusieurs arcs dont le comportement est fixé par les déclarations
show="replace" actuate="onLoad", le comportement de l'application est libre pour XLink.
L'application devrait traverser à partir de la ressource de départ vers la ressource d'arrivée seulement à la suite d'un événement, survenant après le chargement, qui est déclenché dans le but de la traversée. Un exemple d'un tel événement pourrait intervenir quand l'utilisateur clique sur la présentation de la ressource de départ, ou quand un module logiciel achève un compte à rebours précédant une redirection.
Le comportement de l'application traversant vers la ressource d'arrivée est libre pour cette spécification. L'application devrait rechercher la présence d'un autre balisage dans le lien pour déterminer le comportement adéquat.
Le comportement de l'application traversant vers la ressource d'arrivée est libre pour cette spécification. Aucun autre balisage n'est fourni pour aider l'application à déterminer le comportement adéquat.
label, from et to)Les attributs de traversée sont label, from et to.
L'attribut label peut s'utiliser sur les éléments
de type resource et locator. Les attributs from et to
peuvent s'utiliser sur l'élément de type arc.
Contrainte : Les valeurs des attributs label, from et to
La valeur des attributs label, from et to doit
être du type NCName.
Si une valeur est donnée à un attribut from, ou to, elle
doit correspondre à la même valeur qu'un certain attribut label
sur un élément de type locator ou bien resource, qui apparaît comme enfant direct
au sein du même élément de type extended dans lequel se trouve aussi l'élément de type arc.
Le DTD suivant rend invalide (pour les raisons de l'argumentation) toutes les structures XLink pour lesquelles cette spécification ne définit pas de comportement. Il n'est proposé que par commodité pour les développeurs d'applications ; il n'a aucun statut normatif.
Ce DTD s'appuie sur les postulats suivants :
Seules les structures qui ont une signification définie par XLink sont admises ;
aucun vocabulaire « étranger » ne s'y mèle, étant donné que les DTD ne fonctionnent pas bien avec les espaces de nommage ;
l'utilisation du mot-clé ANY indique qu'il y a habituellement un contenu, fourni dans l'élément, qui est utilisé par XLink d'une manière ou d'une autre ;
l'utilisation de la structure (title*) signifie que tout contenu fourni, qui n'est pas un titre, n'a pas d'utilisation
définie par XLink ;
les éléments sont nommés d'après les types d'élément XLink qu'ils représentent.
Les autres postulats et conditions apparaissent en commentaires dans le 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>
<!-- l'attribut xml:lang n'est pas obligatoire, mais il offre l'essentiel
de la motivation des éléments title en plus des attributs,
il est donc placé ici par commodité -->
<!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*)>
<!-- l'attribut label n'est pas obligatoire, mais les localisateurs n'ont aucune fonction
XLink particulière s'ils ne sont pas étiquetés -->
<!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*)>
<!-- les attributs from et to ont un comportement par défaut quand leur valeur est absente -->
<!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>
|
Cette spécification a été produite par le groupe de travail sur les liaisons XHTML, comportant les membres actifs suivants à l'achèvement de cette spécification :
Les rédacteurs souhaitent remercier pour leurs contributions substantielles Tim Bray, précédemment co-rédacteur et vice-président, et Ben Trafford, précédemment co-rédacteur. Nous voudrions également remercier pour ses importantes contributions Gabe Beged-Dov, qui a écrit la proposition XArc. Enfin, nous voudrions remercier les groupes d'intérêt et de travail sur les liaisons XHTML pour leur soutien et leurs conseils, ainsi que Henry Thompson, pour sa participation en tant que président du groupe et contact pour l'équipe pendant les derniers mois avant la publication.