Un article de blog technique introduit un mot de jargon pour la première fois, « API », et lui donne sa définition dans la foulée, au sein de la même phrase. Comment dire au navigateur et aux outils qui analysent la page « c'est précisément ici que ce mot est officiellement défini », plutôt qu'une mention parmi d'autres dans le texte ?
<dfn> répond à ce besoin précis : il marque l'instance exacte où un terme reçoit sa définition, pas chacune de ses apparitions.
Définition
<dfn> enveloppe le terme au moment précis où il est officiellement défini dans le texte. Le paragraphe ou la phrase qui l'entoure est compris comme portant la définition de ce terme, ce qui distingue cette occurrence de toutes les autres fois où le même mot réapparaîtra plus loin dans l'article, en texte normal.
Syntaxe et l'attribut title
<dfn> ne porte aucun attribut qui lui soit propre, mais il se combine souvent avec l'attribut global title, qui peut porter la définition complète du terme, parfois plus détaillée que ce qui apparaît dans la phrase elle-même. Cette définition s'affiche en infobulle au survol et reste accessible à certains lecteurs d'écran comme nom accessible.
<p>
Une <dfn title="Interface qui permet à deux logiciels de communiquer entre eux">API</dfn>
expose des fonctions qu'un autre programme peut appeler directement.
</p>Une seule fois par terme, dans un contexte donné
La règle la plus importante tient en une phrase : <dfn> marque l'instance de définition, une seule, pas chaque apparition du mot. Une confusion fréquente consiste à l'utiliser comme un simple outil de mise en valeur, posé sur chaque occurrence d'un mot-clé dans la page, un peu comme le ferait un surligneur automatique de glossaire.
Ce n'est pas le rôle de <dfn>, qui existe justement pour signaler LA définition, pas toutes les mentions du terme. Ce comportement de surlignage répété, sur chaque occurrence, correspond plutôt à ce que fait <mark>, une balise conçue pour la pertinence ou la correspondance, sans aucune notion de définition attachée. Réutiliser <dfn> sur chaque mention brouille le repère qu'il est censé fournir : où, exactement, ce terme est-il défini ?
Rendu par défaut et différence avec <mark>
Les navigateurs affichent <dfn> en italique par défaut, une convention visuelle proche de celle de l'emphase mais qui porte un sens différent : ce n'est pas une insistance sur un mot, c'est le marquage d'une définition. <mark>, à l'inverse, s'affiche avec un fond surligné et peut apparaître autant de fois que nécessaire dans un texte, à chaque occurrence pertinente, sans jamais porter d'idée de définition.
Cas d'usage et bonnes pratiques
Un glossaire technique en est l'exemple le plus direct : chaque entrée définit un terme une fois, à l'endroit précis de sa définition. Quand le terme défini est lui-même un élément de code, comme le nom d'une fonction, il est possible d'imbriquer <code> à l'intérieur de <dfn> pour cumuler les deux sens. Définissez chaque terme une seule fois par page ou par section, ajoutez l'attribut title quand la phrase seule ne suffit pas à donner une définition complète, et ne l'employez jamais uniquement pour mettre un mot en valeur visuellement.
Questions fréquentes
Peut-on utiliser <dfn> à chaque fois que le mot réapparaît dans l'article ?
Non, seulement à l'endroit où il reçoit sa définition officielle dans ce contexte précis. Les réapparitions suivantes restent en texte normal, éventuellement sous forme de lien vers cette définition, jamais en répétant la balise <dfn> à chaque occurrence.
<dfn> et <mark> se ressemblent-ils dans leur rôle ?
Non, malgré une confusion fréquente entre les deux. <dfn> désigne l'instance de définition d'un terme, une seule fois, tandis que <mark> signale une pertinence ou une correspondance, potentiellement répétée autant de fois que nécessaire, sans aucune notion de définition attachée à son usage.
Que change l'attribut title posé sur un <dfn> ?
Il porte une définition complète, éventuellement plus longue et plus précise que ce qui apparaît directement dans la phrase, affichée en infobulle au survol de la souris et lue par certains lecteurs d'écran comme nom accessible du terme, utile quand le mot seul, un sigle par exemple, ne suffit pas à en comprendre le sens.