La version française de cette traduction est :
http://www.la-grange.net/w3c/html4.01/
Traducteur : J.J.Solari dans le cadre de l'effort de la liste de discussion w3c-translators.fr@w3.org
La version française peut contenir des erreurs. La version anglaise de cette note est l'unique version
normative. Version originale : http://www.w3.org/TR/1999/REC-html401-19991224
Sommaire
HTML offre nombre des expressions conventionnelles de l'édition pour enrichir le texte et structurer les documents, mais ce qui le distingue des autres langages de balisage ce sont ses fonctionnalités pour les documents hypertextes et interactifs. Cette section présente le lien (ou encore hyperlien ou lien Web) qui est la structure hypertexte de base. Le lien représente une connexion d'une ressource Web à une autre. Bien que le concept en soit simple, le lien a été un des moteurs principaux de la réussite du Web.
Un lien possède deux extrêmités, appelées ancres, et une direction. Le lien part de l'ancre « source » et pointe vers l'ancre « destination », qui peut représenter n'importe quelle ressource Web (par exemple, une image, une séquence vidéo, un extrait sonore, un programme, un document HTML, un élément au sein d'un document HTML, etc.).
Le comportement par défaut associé au lien est de ramener une autre ressource Web. Ce comportement est communément et implicitement obtenu par la sélection du lien (par exemple, un clic de souris, une entrée au clavier, etc..
L'extrait HTML suivant contient deux liens, l'un dont l'ancre destination est un document HTML nommé "chapitre2.html" et l'autre une image au format PNG nommée "foret.png" :
<BODY> ...un texte... <P>Plus de détails dans le <A href="chapitre2.html">chapitre deux</A>. Voir aussi cette <A href="../images/foret.png">carte de la forêt enchantée.</A> </BODY>
En activant ces liens (par un clic de souris, une entrée au clavier, une commande vocale, etc.), l'utilisateur peut visiter ces ressources. Remarquez que l'attribut href dans chaque ancre source spécifie l'adresse de l'ancre destination avec un URI.
L'ancre destination du lien peut être un élément à l'intérieur d'un document HTML. L'ancre destination doit avoir reçu un nom d'ancre et tout URI qui désigne cet ancre doit inclure le nom comme étant son identifiant de fragment.
Les ancres destinations dans les documents HTML peuvent être spécifiées soit par l'élément A (en le nommant grâce à l'attribut name), soit par tout autre élément (en le nommant avec l'attribut id).
Ainsi, par exemple, un auteur pourrait créer une table des matières dont les entrées sont reliées aux éléments de titre H2, H3, etc., dans le même document. En utilisant l'élément A pour créer les ancres destinations, nous écririons :
<H1>Table des matières</H1> <P><A href="#section1">Introduction</A><BR> <A href="#section2">Historique</A><BR> <A href="#section2.1">Sur un ton plus personnel</A><BR> ...le reste de la table des matières... ...le corps du document... <H2><A name="section1">Introduction</A></H2> ...section 1... <H2><A name="section2">Historique</A></H2> ...section 2... <H3><A name="section2.1">Sur un ton plus personnel</A></H3> ...section 2.1...
On peut obtenir le même effet en transformant les éléments de titre eux-mêmes en ancres :
<H1>Table des matières</H1> <P><A href="#section1">Introduction</A><BR> <A href="#section2">Historique</A><BR> <A href="#section2.1">Sur un ton plus personnel</A><BR> ...le reste de la table des matières... ...le corps du document... <H2 id="section1">Introduction</H2> ...section 1... <H2 id="section2">Historique</H2> ...section 2... <H3 id="section2.1">Sur un ton plus personnel</H3> ...section 2.1...
De loin, l'utilisation la plus commune du lien est de ramener une autre ressource Web, comme illustré dans les exemples précédents. Cependant, les auteurs peuvent insérer, dans leurs documents, des liens qui expriment d'autres relations entre les ressources que le simple « activer ce lien pour visiter telle ressource ». Les liens qui expriment d'autres types de relation ont un ou plusieurs types de lien spécifiés dans leur ancre source.
Les rôles d'un lien défini par l'élément A, ou LINK, sont spécifiés au travers des attributs rel et rev.
Par exemple, les liens définis par l'élément LINK peuvent décrire la position d'un document par rapport à une série de documents. Dans l'extrait suivant, les liens dans le document intitulé « Chapitre 5 » pointent vers le chapitre qui précède et celui qui suit :
<HEAD> ...autres informations d'en-tête... <TITLE>Chapitre 5</TITLE> <LINK rel="prev" href="chapitre4.html"> <LINK rel="next" href="chapitre6.html"> </HEAD>
Le type du premier lien est "prev" et celui du second est "next" (deux parmi plusieurs types de lien reconnus). Les liens spécifiés par l'élément LINK ne sont pas restitués avec le contenu du document, même si les agents utilisateurs peuvent les restituer autrement (par exemple, comme outils de navigation).
Même s'ils ne sont pas utilisés pour la navigation, ces liens peuvent être interprétés de manière intéressante. Par exemple, un agent utilisateur, qui imprime une série de documents HTML comme si c'était un seul document, peut utiliser ces informations de lien comme base pour la formation d'un document linéaire cohérent. On donne plus d'informatons ci-dessous sur l'utilisation des liens au bénéfice des moteurs de recherche.
Bien que plusieurs éléments et attributs HTML créent des liens vers d'autres ressources (par exemple, l'élément IMG, l'élément FORM, etc.), ce chapitre traite des liens et des ancres créées par les éléments LINK et A. L'élément LINK ne peut apparaître que dans l'en-tête du document. L'élément A ne peut apparaître que dans le corps.
Quand l'attribut href de l'élément A est spécifié, l'élément définit l'ancre source d'un lien que l'utilisateur peut activer pour ramener une ressource Web. L'ancre source représente l'emplacement de l'instance de A et l'ancre destination la ressource Web.
La ressource ramenée peut être prise en main par l'agent utilisateur de plusieurs façons : en ouvrant un nouveau document HTML dans la même fenêtre d'agent utilisateur, en ouvrant un nouveau document HTML dans une fenêtre différente, en lançant un nouveau programme qui va prendre en charge la ressource, etc. Puisque l'élément A possède un contenu (texte, images, etc.), les agents utilisateurs peuvent restituer ce contenu de manière à indiquer la présence d'un lien (par exemple, en soulignant ce contenu).
Quand les attributs name ou id de l'élément A sont spécifiés, l'élément définit alors une ancre qui peut être la destination d'autres liens.
Les auteurs peuvent spécifier simultanément les attributs name et href dans la même instance de A.
L'élément LINK définit une relation entre le document courant et une autre ressource. Bien que l'élément LINK n'ait aucun contenu, la relation qu'il définit peut être restituée par certains agents utilisateurs.
L'attribut title peut être spécifié sur les deux éléments A et LINK pour ajouter des informations sur la nature d'un lien. Ces informations peuvent être parlées par l'agent utilisateur, être restituées sous forme d'infobulles, entraîner un changement dans la représentation de l'image du curseur, etc.
Nous pouvons donc enrichir l'exemple précédent en produisant un titre pour chaque lien :
<BODY> ...un texte... <P>Plus de détails dans le <A href="chapitre2.html" title="Aller au chapitre deux">chapitre deux</A>. <A href="./chapter2.html" title="Voir le chapitre deux.">chapitre deux</A>. Voir aussi cette <A href="../images/foret.png" title="Image PNG de la forêt enchantée">carte de la forêt enchantée.</A> </BODY>
Comme les liens sont susceptibles de pointer vers des documents codés avec différents encodages de caractères, les éléments A et LINK reconnaissent l'attribut charset. Cet attribut permet aux auteurs de conseiller les agents utilisateurs sur le codage des données à l'autre extrêmité du lien.
L'attribut hreflang apporte aux agents utilisateurs des informations concernant la langue de la ressource au bout d'un lien, tout comme l'attribut lang fournit des informations à propos de la langue du contenu d'un élément ou de la valeur d'un attribut.
Munis de cette connaissance supplémentaire, les agents utilisateurs devraient pouvoir éviter la présentation d'informations incohérentes à l'utilisateur. Au lieu de cela, ils peuvent localiser les ressources nécessaires pour la présentation correcte du document, ou bien, s'ils ne peuvent pas localiser ces ressources, ils devraient au moins avertir l'utilisateur que le document sera illisible et en donner la raison.
<!ELEMENT A - - (%inline;)* -(A) -- ancre --> <!ATTLIST A %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #IMPLIED -- encodage de la ressource reliée -- type %ContentType; #IMPLIED -- type de contenu consultatif -- name CDATA #IMPLIED -- extrêmité de lien nommée -- href %URI; #IMPLIED -- URI de la ressource reliée -- hreflang %LanguageCode; #IMPLIED -- code de langue -- rel %LinkTypes; #IMPLIED -- types de lien progressif -- rev %LinkTypes; #IMPLIED -- types de lien inverse -- accesskey %Character; #IMPLIED -- touche pour l'accessibilité -- shape %Shape; rect -- pour images cliquables côté client -- coords %Coords; #IMPLIED -- pour images cliquables côté client -- tabindex NUMBER #IMPLIED -- position dans l'ordre de tabulation -- onfocus %Script; #IMPLIED -- l'élément acquiert l'attention -- onblur %Script; #IMPLIED -- l'élément perd l'attention -- >
Balise ouvrante : obligatoire, balise fermante : obligatoire
Définition des attributs
Attributs définis ailleurs
Chaque élément A définit une ancre :
Les auteurs peuvent également créer un élément A qui ne spécifie aucune ancre, i.e., qui ne spécifie aucun attribut href, name ou id. Les valeurs de ces attributs peuvent être fixées par la suite au moyen de scripts.
Dans l'exemple suivant, l'élément A définit un lien. L'ancre source est représentée par le texte « site Web du W3C » et l'ancre destination par "http://www.w3.org/" :
Pour plus d'informations, veuillez consulter le <A href="http://www.w3.org/">site Web du W3C</A>.
Ce lien désigne la page d'accueil du World Wide Web Consortium. Quand un utilisateur active ce lien via l'agent utilisateur, celui-ci va ramener la ressource, ici un document HTML.
Les agents utilisateurs restituent généralement les liens de sorte à les mettre en évidence pour les utilisateurs (soulignage, vidéo inverse, etc.). La restitution exacte dépend de l'agent utilisateur. La restitution peut varier si l'utilisateur a déjà visité le lien ou non. Une restitution visuelle du lien précédent pourrait être la suivante :
Pour plus d'informations, veuillez consulter le site Web du W3C. ---------------
Pour indiquer explicitement aux agents utilisateurs l'encodage de caractères de la page de destination, spécifiez l'attribut charset :
Pour plus d'information, veuillez consulter le <A href="http://www.w3.org/" charset="ISO-8859-1">site Web du W3C</A>
Supposons que nous définissions une ancre nommée "ancre-1" dans le fichier "un.html".
...texte avant l'ancre... <A name="ancre-1">Voici l'emplacement de l'ancre un.</A> ...texte après l'ancre...
Ceci crée une ancre autour du texte « Voici l'emplacement de l'ancre un. ». Habituellement, le contenu de l'élément A n'est pas restitué de façon particulière quand l'élément A définit seulement une ancre.
Ayant défini l'ancre, nous pouvons nous y référer à partir du même document ou d'un autre. Les URI qui désignent des ancres contiennent un caractère « # » suivi par le nom de l'ancre (l'identifiant de fragment). Voici quelques exemples de tels URI :
Ainsi, un lien défini dans le fichier "deux.html" dans le même répertoire que le fichier "un.html" se référerait à l'ancre comme suit :
...texte avant le lien... Pour plus d'informations, veuillez consultez l'<A href="./un.html#ancre-1">ancre un</A>. ...texte après le lien...
Dans l'exemple suivant, l'élément A spécifie un lien (avec l'attribut href) et crée une ancre nommée (avec l'attribut name) simultanément :
Je viens de rentrer de vacances ! Voici une <A name="ancre-2" href="http://www.unecompanie.com/Gens/Ian/vacances/famille.png"> photo de ma famille sur le lac.</A>.
Cet exemple contient un lien vers un autre type de ressource Web (une image PNG). L'activation du lien entraînerait le chargement de la ressource image à partir du Web (et éventuellement son affichage si le système est configuré dans ce sens).
Remarque : Les agents utilisateurs devraient être capables de trouver les ancres créées par des éléments A vides, mais certains n'arrivent pas à le faire. Par exemple, certains agents utilisateurs peuvent ne pas trouver l'ancre « ancre-vide » dans le fragment HTML suivant :
<A name="ancre-vide"></A> <EM>...autre HTML...</EM> <A href="#ancre-vide">Lien vers l'ancre vide</A>
Le nom d'une ancre est la valeur soit de l'attribut name, soit de l'attribut id, quand on les utilise dans le contexte des ancres. Les noms d'ancre doivent obéir aux règles suivantes :
Ainsi, l'exemple suivant est juste pour ce qui est de la correspondance des chaînes et doit donc être considéré comme une correspondance par les agents utilisateurs :
<P><A href="#xxx">...</A> ...suite du document... <P><A name="xxx">...</A>
EXEMPLE ILLÉGAL :
L'exemple suivant est illégal pour ce qui est de l'unicité, dans la mesure où les deux noms sont identiques
mis à part la casse :
<P><A name="xxx">...</A> <P><A name="XXX">...</A>
Bien que l'extrait suivant soit un code HTML légal, le comportement de l'agent utilisateur n'est pas défini ; certains agents utilisateurs peuvent considérer (par erreur) ceci comme étant une correspondance et d'autres non.
<P><A href="#xxx">...</A> ...suite du document... <P><A name="XXX">...</A>
Les noms d'ancre devraient se limiter aux caractères ASCII. Veuilleur consulter l'appendice pour plus d'informations sur les caractères non-ASCII dans les valeurs d'attribut URI.
Les liens et les ancres définis par l'élément A ne doivent pas être imbriqués ; un élément A ne doit pas contenir d'autres éléments A.
Puisque le DTD définit l'élément LINK comme étant vide, les éléments LINK ne doivent pas être imbriqués non plus.
On peut utiliser l'attribut id pour créer une ancre dans la balise ouvrante de n'importe quel élément (y compris l'élément A).
Cet exemple illustre une utilisation de l'attribut id pour positionner une ancre dans un élément H2. L'ancre est reliée via l'élément A.
Vous pouvez obtenir des précisions dans la <A href="#section2">Section deux</A>. ...plus loin dans le document <H2 id="section2">Section deux</H2> ...plus loin dans le document <P>Veuillez vous reporter à la <A href="#section2">Section deux</A> ci-dessus pour plus de détails.
L'exemple suivant nomme une ancre destination avec l'attribut id :
Je suis de retour de vacances ! Voici une <A id="ancre-deux">photo de ma famille sur le lac.</A>.
Les attributs id et name partagent le même espace de noms. Cela signifie qu'ils ne peuvent pas tous deux définir une ancre avec le même nom dans le même document. On admet l'utilisation des deux attributs pour spécifier l'identifiant unique d'un élément pour les éléments suivants : A, APPLET, FORM, FRAME, IFRAME, IMG et MAP. Quand les deux attributs sont utilisés sur un seul élément, leurs valeurs doivent être identiques.
EXEMPLE ILLÉGAL :
L'extrait suivant est un code HTML illégal, puisque ces attributs
déclare le nom deux fois dans le même document.
<A href="#a1">...</A> ... <H1 id="a1"> ...des pages et des pages... <A name="a1"></A>
L'exemple suivant illustre le fait que les attributs id et name doivent être les mêmes quand tous les deux apparaissent dans la balise ouvrante d'un élément :
<P><A name="a1" id="a1" href="#a1">...</A>
De par sa spécification dans le DTD de HTML, l'attribut name peut contenir des références de caractères. Ainsi, la valeur "Dürst" est valide pour l'attribut name, comme l'est la valeur "Dürst". La valeur de l'attribut id, par contre, ne peut pas contenir de références de caractères.
Utiliser id ou name ? Les auteurs devraient considérer les points suivants au moment de décider lequel attribut utiliser entre id et name pour le nom d'une ancre :
L'appel d'une ressource non disponible ou non identifiable constitue une erreur. Bien que les agents utilisateurs puissent varier dans la manière de gérer une telle erreur, nous recommandons les comportements suivants :
<!ELEMENT LINK - O EMPTY -- un lien indépendant du média --> <!ATTLIST LINK %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #IMPLIED -- encodage de caractères de la ressource reliée -- href %URI; #IMPLIED -- URI de la ressource reliée -- hreflang %LanguageCode; #IMPLIED -- code de langue -- type %ContentType; #IMPLIED -- type de contenu consultatif -- rel %LinkTypes; #IMPLIED -- types de lien progressif -- rev %LinkTypes; #IMPLIED -- types de lien inverse -- media %MediaDesc; #IMPLIED -- pour restitution sur ce média -- >
Balise ouvrante : obligatoire, balise fermante : interdite
Attributs définis ailleurs
Cet élément définit un lien. À la différence de l'élément A, il ne peut apparaître que dans la section HEAD du document, même s'il peut apparaître un nombre de fois quelconque. Bien que l'élément LINK n'ait pas de contenu, il véhicule des informations de relations qui peuvent être restituées par les agents utilisateurs de diverses façons (par exemple, une barre d'outils avec un menu déroulant présentant les liens).
Cet exemple illustre la manière dont les éléments LINK peuvent apparaître dans la section HEAD d'un document. Le document courant a pour nom "chapitre2.html". L'attribut rel spécifie la relations du document relié avec le document courant. Les valeurs "Index", "Next" et "Prev" sont expliquées dans la section sur les types de lien.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Chapitre 2</TITLE> <LINK rel="Index" href="../index.html"> <LINK rel="Next" href="chapitre3.html"> <LINK rel="Prev" href="chapitre1.html"> </HEAD> ...le reste du document...
Les attributs rel et rev jouent des rôles complémentaires : l'attribut rel spécifie un lien progressif [ndt. forward link] et l'attribut rev un lien inverse [ndt. reverse link].
Considérons les deux documents A et B suivants.
Document A : <LINK href="docB" rel="foo">
celui-ci a exactement la même signification que :
Document B : <LINK href="docA" rev="foo">
On peut spécifier les deux attributs simultanément.
Quand l'élément LINK relie une feuille de style externe à un document, l'attribut type spécifie le langage de feuille de style et l'attribut media spécifie le ou les médias de restitution prévus. Les agents utilisateurs peuvent gagner du temps en ne ramenant que celles des feuilles de style qui s'appliquent à l'appareil courant.
Les types de média sont abordés ultérieurement dans la section sur les feuilles de style.
Les auteurs peuvent utiliser l'élément LINK pour fournir diverses informations aux moteurs de recherche, comprenant :
Les exemples ci-dessous illustrent les façons de combiner les indications de langue, les types de média et les types de lien pour améliorer la prise en charge des documents par les moteurs de recherche.
Dans l'exemple suivant, nous utilisons l'attribut hreflang pour indiquer aux moteurs de recherche où trouver les versions hollandaise, portugaise et arabe d'un document. Remarquez l'utilisation de l'attribut charset pour le manuel arabe. Remarquez aussi l'utilisation de l'attribut lang pour indiquer que la valeur de l'attribut title de l'élément LINK, qui désigne le manuel français, est en français.
<HEAD> <TITLE>Le manuel en anglais</TITLE> <LINK title="Le manuel en hollandais" type="text/html" rel="alternate" hreflang="nl" href="http://quelquepart.com/manuel/hollandais.html"> <LINK title="Le manuel en portugais" type="text/html" rel="alternate" hreflang="pt" href="http://quelquepart.com/manuel/portugais.html"> <LINK title="Le manuel en arabe" type="text/html" rel="alternate" charset="ISO-8859-6" hreflang="ar" href="http://quelquepart.com/manuel/arabe.html"> <LINK lang="fr" title="Le manuel en français" type="text/html" rel="alternate" hreflang="fr" href="http://quelquepart.com/manuel/francais.html"> </HEAD>
Dans l'exemple suivant, nous indiquons aux moteurs de recherche où trouver la version imprimée d'un manuel.
<HEAD> <TITLE>Manuel de référence</TITLE> <LINK media="print" title="Le manuel en Postscript" type="application/postscript" rel="alternate" href="http://quelquepart.com/manuel/postscript.ps"> </HEAD>
Dans l'exemple suivant, nous indiquons aux moteurs de recherche où trouver la page de garde d'une collection de documents.
<HEAD> <TITLE>Manuel de référence -- Page 5</TITLE> <LINK rel="Start" title="La première page du manuel" type="text/html" href="http://quelquepart.com/manuel/debut.html"> </HEAD>
On donne des informations supplémentaires en appendice dans les remarques pour aider les moteurs de recherche dans l'indexation de votre site Web.
<!ELEMENT BASE - O EMPTY -- URI de base du document --> <!ATTLIST BASE href %URI; #REQUIRED -- l'URI faisant office d'URI de base -- >
Balise ouvrante : obligatoire, balise fermante : interdite
Définition des attributs
Attributs définis ailleurs
Dans HTML, les liens et les références d'images, d'applets, de programmes de traitement de formulaire, de feuilles de style, etc. sont toujours spécifiés par un URI. Les URI relatifs sont résolus par rapport à un URI de base, qui peut avoir diverses provenances. L'élément BASE permet aux auteurs de spécifier explicitement l'URI de base d'un document.
Quand il est présent, l'élément BASE doit apparaître dans la section HEAD du document HTML, avant tout élément qui se réfère à une source externe. L'information de chemin spécifiée par l'élément BASE n'affecte que les URI du document dans lequel cet élément apparaît.
Par exemple, soit les déclarations suivantes des éléments BASE et A :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Nos produits</TITLE> <BASE href="http://www.poulets.com/produits/intro.html"> </HEAD> <BODY> <P>Avez-vous vu nos <A href="../cages/poules.gif">cages à poules</A> ? </BODY> </HTML>
l'URI relatif "../cages/poules.gif" se résoudrait en :
http://www.poulets.com/cages/poules.gif
Les agents utilisateurs doivent calculer l'URI de base, pour la résolution des URI relatifs, selon le document [RFC1808], section 3. Ce qui suit est la description de la mise en application du document [RFC1808] spécifiquement à HTML.
Les agents utilisateurs doivent calculer l'URI de base en fonction de la préséance suivante (de la priorité la plus élevée à la plus basse) :
De surcroît, les éléments OBJECT et APPLET définissent des attributs qui ont priorité sur la valeur fixée par l'élément BASE. Veuillez consulter les définitions de ces éléments pour des précisions sur les questions d'URI qui leur sont propres.
Remarque : Pour les versions de HTTP qui définissent un en-tête « Link », les agents utilisateurs devraient prendre en compte ces en-têtes exactement comme les éléments LINK dans le document. Le protocole HTTP 1.1, tel que défini par le document [RFC2616], ne comprend pas de champs d'en-tête « Link » (voir la section 19.6.3).