Hyperliens

Sommaire

  1. Chemins d'accès : L'élément BASE
  2. Liens et ancres
    1. Définition des liens et des ancres
    2. L'élément A
    3. L'attribut id comme ancre
    4. L'élément LINK
    5. Types de liens
    6. Liens et feuilles de style externes
    7. Liens et moteurs de recherche
Jusqu'à ce point, la présente spécification a présenté des constructions HTML qui ajoutent des définitions structurelles à un document simple. Dans la section qui suit, nous introduirons les concepts et constructions qui permettent d'établir des liens entre les documents.

Chemins d'accès : L'élément BASE

<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE
  href        %URL       #REQUIRED
  target      CDATA      #IMPLIED  -- où afficher des ressources liées --
  >

Balise de début : requise, Balise de fin : interdite

Définition des attributs

href = url
Cet attribut spécifie une URL absolue servant de base à toutes les URL relatives exprimées dans le document.

Attributs définis par ailleurs

Il est important de bien connaître les notions de chemin d'accès lorsque d'autres documents ou ressources doivent être liées entre elles. En HTML, les informations de chemin d'accès sont toujours exprimées sous forme d'URL. Des URL relatives sont résolues par rapport à une URL de base, laquelle peut être obtenue à partir d'un grand nombre de sources différentes (voir la section sur les URL relatives pour plus d'informations sur les sources possibles d'URL de base). L'élément BASE est une de ces sources, que les auteurs peuvent employer pour effectuer une déclaration explicite d'URL de base.

Lorsque présent, l'élément BASE doit être inscrit dans la section HEAD du document HTML. La portée de cette déclaration se limite à ce document uniquement.

Par exemple, soit la déclaration suivante d'un élément BASE :

<HTML>
<HEAD>
<BASE href="http://www.barre.fr/fou/intro.html">
</HEAD>
...
</HTML>

L'URL relative "../gee/foo.html" serait résolue en :

http://www.barre.fr/gee/foo.html

Liens et ancres

Un lien HTML est une connexion d'une ressource Web vers une autre. Bien que le concept soit très simple, ces liens ont été la principale raison du succès du Web.

Définitions des liens et des ancres

Un lien HTML est l'association de deux "extrémités" et d'une direction. Un lien part toujours d'une "source" et pointe vers une "destination".

Toute définition de lien spécifie à la fois sa source et sa destination. Une extrémité est toujours définie par l'URL du document où la définition du lien est inscrite. L'autre extrémité est définie par un attribut dans cette définition.

Une extrémité d'un lien se réfère toujours à une ressource du Web, telle qu'un document HTML, une image, un clip vidéo, un fichier sonore, un programme, le document courant, etc. Une extrémité de lien peut aussi désigner une ancre. Une ancre est une zone nommée à l'intérieur d'un document HTML. Cette zone peut inclure du texte ou tout autre objet.

Utilisation des liens

Ainsi définis, les liens n'ont pas de sémantique inhérente ; ils ne font qu'associer symboliquement une source et une destination. Cependant, les liens fournissent aussi une information de type que les agents utilisateurs peuvent interpréter de plusieurs manières.

Bien sûr, l'usage le plus commun des liens est la récupération de la ressource pointée (par exemple en cliquant à la souris, ou en activant un lien à l'aide d'une commande vocale, etc.).

La navigation dans le Web n'est cependant pas la seule utilisation des liens. Par exemple, des auteurs peuvent vouloir définir des liens qui spécifient le document "suivant" et "précédent" dans une série de documents. Certains agents utilisateurs pourront utiliser et afficher ces liens comme des outils de navigation indépendants plutôt que comme faisant partie du document.

De façon similaire, les auteurs pourront utiliser les liens pour définir un ordre d'impression dans une série de documents. Les agents utilisateurs pourront alors suivre ces liens pour imprimer un eversion complète et cohérente d'un manuel ou d'un livre.

Définir les extrémités d'un lien

Comme défini précédemment, un lien a deux extrémités (la source et la destination), la première étant définie par la localisation du document dans lequel se trouve la définition dudit lien. Mais peut on dire si cette extrémité est en fait la source ou la destination du lien ?

Imaginez que vous êtes l'auteur d'un livre écrit en HTML, et vous souhaitez que vos lecteurs puissent lire ce livre du début jusqu'à la fin, chapitre par chapitre. Si chaque chapitre est un document HTML séparé, vous pouvez représenter l'information d'ordre par des liens : Chaque document incluerait deux liens, un pointant sur le chapitre précédent et un vers le suivant. Le lien désignant le chapitre précédent a pourtant sa destination dans le document courant et sa source dans le chapitre précédent (si l'on considère un ordre sémantique). Le lien désignant le chapitre suivant a sa source dans le document courant et sa destination ans le chapitre qui suit. En enregistrant cette information de structure dans des définitions de liens, vous permettrez aux agents utilisateurs de représenter ces relations d'ordre d'une façon plus explicite ou ergonomique, telle que des boutons de navigation, des menus, etc.

L'attribut rel spécifie que le lien a une source sémantique qui correspond au document présent. L'attribut rev spécifie au contraire que le lien défini dans ce document est une destination. De plus, les valeurs de ces attributs fourniront aux agents utilisateurs des informations sur le type de ressource situé à l'extrémité distante de ce lien. Vous trouverez ci-dessous des exemples d'utilisation de ces liens.

Eléments définissant des liens

Deux éléments HTML définissent des liens : LINK et A.

Des éléments LINK ne pourront apparaître que dans une section HEAD d'un document HTML. Ils définissent des relations entre le document courant et d'autres ressources. Bien que l'élément LINK n'ait pas de contenu, les relations instituées pourront être représentées graphiquement par les agents utilisateurs.

L'élément A ne pourra apparaître que dans la section BODY d'un document. Il définit une relation entre une zone à l'intérieur du document courant et une autre ressource. L'élément A a un contenu (texte, images, etc.) qui devra être représenté en même temps que le reste du contenu du document. Les agents utilisateurs mettront en valeur d'une façon ou d'une autre ce contenu pour indiquer l'activité de la zone.

L'une des autres distinctions importantes entre ces deux éléments est qu'un lien défini par un élément A est en général interprété par l'agent utilisateur comme "récupère la ressource à l'autre extrémité de ce lien". La ressource récupérée pourra alors être traitée par l'agent utilisateur de plusieurs manières : soit en ouvrant un nouveau document HTML dans la même fenêtre d'afichage, ou dans une fenêtre différente, ou en démarrant un programme extérieur pour lui passer la ressource, etc.

L'attribut title de cet élément pourra être utilisé pour ajouter des informations concernant la nature du lien. Cette information pourra être déclamée par un agent utilisateur vocal, ou représentée par une bulle d'aide, pourra changer la nature du curseur, etc.

Les éléments qui décrivent les ancres

Il y a deux façons de spécifier des ancres dans un document HTML :

Ancres et liens simultanés. L'élément A est à la fois pour désigner des ancres et des liens. Il est possible, et même économique, d'utiliser les mêmes éléments A pour définir à la fois un lien et une ancre.

Internationnalisation et liens

Du fait que des liens peuvent pointer sur des documents écrits en différentes langues (et peut être même avec des directions de texte distinctes) et voire utilisant des encodages de caractères différents, les éléments A et LINK supportent les attributs lang (langage), dir (directionnalité), et charset (jeu de caractères). Ces attributs permettront aux auteurs de prévenir les agents utilisateurs de la nature des données qui se trouvent à l'autre bout.

Hourdis de cette connaissance supplémentaire (NdA. Ta Ta Tah...!), les agents utilisateurs devraient être en mesure d'éviter d'afficher une infâme soupe de caractères ésotériques. Il devraient au lieu de cela tenter de localiser les ressources nécessaires à une présentation correcte du document ou, si ces dernières ne peuvent être identifiées, avertiront l'utilisateur que ce document est illisible en en donnant la cause.

L'élément A

<!ELEMENT A - - (%inline)* -(A)>
<!ATTLIST A
  %attrs;                          -- %coreattrs, %i18n, %events --
  charset     CDATA      #IMPLIED  -- jeu de caractères de la ressource liée --
  name        CDATA      #IMPLIED  -- extrémité nommée --
  href        %URL       #IMPLIED  -- URL de la ressource liée --
  target      CDATA      #IMPLIED  -- où afficherla ressource --
  rel         CDATA      #IMPLIED  -- type de lien "avant" --
  rev         CDATA      #IMPLIED  -- type de lien "arrière" --
  accesskey   CDATA      #IMPLIED  -- raccourci caractère --
  shape       %Shape     rect      -- à utiliser avec OBJECT SHAPES --
  coords      %Coords    #IMPLIED  -- à utiliser avec OBJECT SHAPES --
  tabindex    NUMBER     #IMPLIED  -- ordre de tabulation --
  >

Balise de début : requise, Balise de fin : requise

Définition des attributs

name = cdata
Cet attribut indique that the element is being used to define an anchor. The value of this attribute is a unique anchor name. The scope of this name is the current document. Note that this attribute shares the same name space as the id attribute.
href = url
Cet attribut indique que l'élément est utilisé pour définir un lien. La valeur de cet attribut est l'adresse réseau de la ressource de l'autre extrémité du lien (l'autre extrémité est implicitement définie par l'adresse du document qui contient cet élément).
rel = cdata
Cet attribut indique que la source du lien est située dans le document courant. La valeur de href désigne dans ce cas la destination de ce lien. La valeur de rel spécifie le type du lien. Cet attribut peut accepter une liste séparée par des espaces de types connus.
rev = cdata
Cet attribut indique que la destination du lien est précisément le document courant. La valeur de l'attribut href dans ce cas désigne l'origine du lien. La valeur de l'attribut rev spécifie le type de lien. Cet attribut peut accepter une liste séparée par des espaces de types connus.
charset = cdata
Cet attribut spécifie le jeu de caractères utilisé dans le corps de document désigné par le lien. La valeur de cet attribut doit être le nom d'un "charset" tel que défini par la [RFC2045] (ex., "euc-jp"). Par défaut, la valeur de cet attribut est "ISO-8859-1".

Attributs définis par ailleurs

L'élément A peut être utilisé pour définir une ancre, un lien ou les deux.

L'exemple qui suit spécifie un lien.

Pour plus d'information sur du W3C, consultez le <A href="http://www.w3.org/">site Web du W3C</A> 

Ce lien désigne la "home page" du World Wide Web Consortium. Lorsqu'un utilisateur activate ce lien dans un agent utilisateur, ce dernier ira récupérer la resource pointée, et dans notre cas, un document HTML.

Les agents utilisateurs affichent habituellement les liens d'une façon qui ne laisse aucune ambiguïté sur leurs spécificité (soulignés, en vidéo inverse, etc.). Leur représentation est fonction de l'agent utilisateur. L'affichage peut aussi dépendre du fait que l'utilisateur a déjà visité le lien ou non. Un affichage possible pour le lien précédent serait :

Pour plus d'information sur le W3C, consultez le site Web du W3C.
                                                 ~~~~~~~~~~~~~~~

Afin de renseigner explicitement les agents utilisateurs du jeu de caractères utilisé dans le document visé, définissez l'attribut charset :

Pour plus d'information sur le W3C, consultez le 
<A href="http://www.w3.org/" charset="ISO-8859-1">site Web du W3C</A> 

L'exemple suivant illustre une définition d'ancre. Supposez que nous définisssions une ancre nommée "ancre-une" dans le fichier "one.html".

...texte précédent l'ancre...
<A name="anchor-one">l'endroit de l'ancre une</A>
...texte après l'ancre...

Cette définition assigne un nom d'ancre à la zone entière du document qui contient le texte "l'endroit de l'ancre une". Normalement, le contenu des éléments A ne seront pas affiché différemment que la normale lorsque l'élément A ne sert qu'à définir une ancre.

Une fois l'ancre définie, nous aimerions pouvoir nous y référer depuis un document (le même ou un autre). Les URL qui designent les ancres se terminent par un "#" suivi du nom de l'ancre. Voici quelques exemples d'URL ainsi constituées :

Ainsi, un lien défini dans un fichier "two.html" dans le même répertoire que "one.html" se référerait à cette ancre comme suit :

...texte précédent le lien...
Pour plus d'informations, consultez l'<A href="./one.html#ancre-une"> ancre un</A>.
...texte suivant le lien...

L'élément A dans l'exemple suivant définit simultanément une ancre et un lien :

Je reviens de vacances ! Voici une
<A name="ancre-deux" 
   href="http://www.somecompany.com/People/Ian/vacation/family.png">
photo de famille au lac.</A>.

Cet exemple contient un lien vers une ressource Web d'un autre type que le document source (une image PNG). L4activation du lien conduirait à la récupération de l'image par le réseau (et certainement son affichage si la plate-forme cliente a été configurée dans ce sens).

Note : Certains agents utilisateurs ne parviennent pas à trouver des ancres définies avec un contenu vide. Par exemple, certains agents utilisateurs sont incapables de trouver l'"ancre-vide" du fragment HTML suivant :

<A name="ancre-vide"></A>
<EM>...du HTML...</EM>
<A href="#ancre-vide">Lien vers l'ancre vide</A>

Syntaxe des valeurs des attributs de lien

Les valeurs des attributs name, rel, et rev observent les règles suivantes :

Liens vers le courrier électronique

Les auteurs souhaiteront parfois créer des liens qui ne pointent aucun document particulier mais provoquent plutôt l'envoi d'un courrier électronique à une adresse donnée. Lorsque le lien est activé, les agents utilisateurs pourront exécuter un programme de courrier en créant directement un message vide adressé par séfaut à la destination indiquée (en la recopiant dans le champ d'en-tête "To:").

Pour provoquer l'envoi d'un courrier électronique lors de l'activation d'un lien, il suffit que l'URL spécifiée dans l'attribut href, soit une URL MAILTO.

Dans l'exemple suivant, lorsque l'utilisateur active le lien, l'agent ouvrirait un programme de courrier en écrivant l'adresse "jean@quelquepart.com" dans le champ "To:".

...du texte...
Pour tous commentaires, envoyer une email à <A href="mailto:jean@quelquepart.com">Jean Cool</A>.

Imbrication de liens

Les liens et les ancres définies par des éléments A ne peuvent être imbriqués.

EXEMPLE ILLEGAL :
L'exemple qui suit illustre une écriture de liens imbriqués qui est rigoureusement interdite en HTML.

Ce texte contiendrait <A name="ancre-exterieure" href="suivant-exterieur.html">une ancre extérieure et un lien, et un <A name="ancre-interieure" href="suivant-intérieur.html">une ancre et un lien intérieur.</A></A>
id comme ancre

L'attribut id pourra être utilisé pour intégrer une ancre dans la balise de début de tout élément.

L'exemple suivant illustre l'utilisation d'un attribut id pour intégrer une ancre dans un élément H2. Se réfère par la suite à cet ancre l'élément A qui suit.

Plus de précisions en <A href="#section2">Section Deux</A>.
...plus loin dans le document
<H2 id="section2">Section Deux</H2>
...encore plus loin dans le document
Cf. <A href="#section2">Section Deux</A> ci-avant pour plus de détails.
Les attributs id et name partagent un espace de noms commun dans le document (voir [ISO10646]). Ceci signifie qu'il n'est pas possible de définir une ancre et un identificateur de même nom dans le même document.

EXEMPLE ILLEGAL :
L'extrait suivant est incorrect en HTML car les deux attributs id et name définissent le même nom.

<BODY>
<A href="#a1">...</A>
...
<H1 id="a1">
...des pages et des pages...
<A name="a1"></A>
</BODY>

Conséquemment à sa définition dans la DTD HTML, l'attribut name peut contenir des entités caractères. Ainsi, la valeur D&#xfc;rst constitue unnom valide. Par opposition, l'attribut id ne peut contenir d'entités caractères.

L'élément LINK

<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
  %attrs;                          -- %coreattrs, %i18n, %events --
  href        %URL       #IMPLIED  -- URL de la ressource liée --
  rel         CDATA      #IMPLIED  -- types de liens avant --
  rev         CDATA      #IMPLIED  -- types de liens arrière --
  type    %ContentType  #IMPLIED  -- type de contenu (indicatif) --
  media       CDATA      #IMPLIED  -- media cible --
  target      CDATA      #IMPLIED  -- cadre cible --
  >

Balise de début : requise, Balise de fin : interdite

Attributs définis par ailleurs

Cet élément, qui doit apparaître dans la section HEAD d'un document (autant de fois que nécessaire), définit un lien indépendant du média. Bien qu'un élément LINK n'ait aucun contenu, il induit des informations relationnelles qui peuvent donner lieu à une représentation physique par les agents utilisateurs (ex., une barre d'outils de navigation et un menu déroulant de liens).

Cet exemple illustre comment plusieurs définitions LINK peuvent apparaître dans la section HEAD d'un document. Les attributs rel et rev spécifient où se situent la source et la destination pour chacun des liens. Les valeurs "Index", "Next", et "Previous" seront exposées dans la section traitant des types de liens.

<HTML>
<HEAD>
<LINK rel="Index"    href="../index.html">
<LINK rel="Next"     href="Chapter_3.html">
<LINK rev="Previous" href="Chapter_1.html">
</HEAD>
...le reste du document...

quand utiliser des attributs rel et rev? Il n'est pas toujours nécessaire d'identifier quelle est la source et quelle est la destination d'un lien. Pour un élément A, la définition des attributs rel et rev n'est pas utile. Pour l'élément LINK, il vous faudra choisir l'un ou l'autre. Voir les distinctions détaillées ci-avant entre les attributs rel et rev.

Types de liens

Les attributs rel et rev spécifient quelle extrémité d'une définition de lien est la destination et laquelle est la source. Dans les deux cas, les valeurs de ces deux attributs définiront la nature du lien. Le cas où les deux attributs sont utilisés dans la même balise de début est possible.

Les auteurs pourront utiliser les types "connus" définis ci-dessous, avec leur signification.

Les agents utilisateurs, moteurs et robots de recherche, etc. pourront interpréter des types de liens de plusieurs façons. Par exemple, les agents utilisateurs pourront proposer un accès raccourci aux documents liés via une barre de navigation. Ou bien, lorsque le type de lien vaut "Next", l'agent utilisateur préchargera le document lié pour gagner du temps.

Contents
Le lien se référe à un document qui sert de table des matières.
Index
Le lien se référe à un document servant d'index thématique pour la série de documents dont fait partie le document courant.
Glossary
Le lien se référe à un docuemnt qui contient un glossaire terminologique pour le document courant.
Copyright
Le lien se référe à une mention de "copyright" applicable au document en cours.
Next
Le lien se référe au prochain document lorsque le document courant fait partie d'une série de documents chaînés. Cette valeur est généralement utilisée pour l'attribut rel.
Previous
Le lien se référe au document précédent lorsque le document courant fait partie d'une série de documents chaînés. Cette valeur est généralement utilisée pour l'attribut rev.
Start
Le lien se référe au premier document d'une séquence de documents. Ce type de lien permet aux moteurs de recherche de trouver quel est le premier document d'une collection, selon l'idée première de son auteur.
Help
Le lien se référe à un document d'aide (informations complémentaires, liens vers d'autres sources d'informations, etc.)
Bookmark
Le lien se référe à un signet. Un signet est un lien sur un point d'entrée particulier dans un document "étendu". L'attribut title pourra être utilisé pour nommer le signet. Notez que plusieurs signets peuvent être définis dans un document.
Stylesheet
Le lien se référe à une feuille de style externe. Voir la section traitant des feuilles de style externes.
Alternate
Le lien se référe à une autre version du même document. L'utilisation conjointe d'un attribut lang, induit une version "traduite" du même document. L'utilisation conjointe d'un attribut media, induit une version de média différent.

Liens et feuilles de style externes

Lorsque l'élément LINK désigne une feuille de style externe au document, l'attribut type spécifie le langage utilisé dans cette feuille de style et l'attribut media indique le médium (ou media) destinataire. Les agents utilisateurs gagneront du temps à ne récupérer du réseau que les feuilles de style qui ne s'appliquent qu'aux périphériqaues disponibles.

Les types de Média serotn traités dans la section copnsacrée aux feuilles de style.

Liens et moteurs de recherche

Les auteurs pourront renseigner les éléments LINK à destination des moteurs et robots de recherche et d'indexation, pour leur fournir :

Les exemples ci-dessous illustrent comment l'information de langue, type de media, et type de lien peuventêtre combinées pour optimiser la recherche automatique d'informations par les moteurs et robots d'indexation.

Dansles exemples qui suivent, nous indiquerons à un moteur de recherche où il doit aller chercher les version Hollandaise, Portugaise, et Arabe d'un document.

<HEAD>
<LINK lang="nl" title="The manual in Dutch"
      rel="alternate"
      href="http://quelquepart.com/manual/dutch.html">
<LINK lang="pt" title="The manual in Portuguese"
      rel="alternate"
      href="http://quelquepart.com/manual/portuguese.html">
<LINK lang="ar" title="The manual in Arabic"
      dir="rtl"
      rel="alternate"
      href="http://quelquepart.com/manual/arabic.html">
</HEAD>

Dans l'exemple qui suit, nous indiquerons à un robot de recherche où trouver la version imprimable du document.

<HEAD>
<LINK media="print" title="The manual in postscript"
      rel="alternate"
      href="http://quelquepart.com/manual/postscript.ps">
</HEAD>

Dans l'exemple ci-dessous, nous indiquons aux robots de recherche où trouver la page de garde de la collection de documents.

<HEAD>
<LINK rel="Start" title="The first page of the manual"
      href="http://quelquepart.com/manual/postscript.ps">
</HEAD>