Petite introduction à l'importance de la sémantique.
Qu'on s'y entende bien : tenter de résumer en quelques
lignes la sémantique serait comme de vouloir expliquer à un
aveugle un panorama somptueux avec trente mots.
La notion de sémantique se construit au fur et à mesure des
expériences, s'apprend souvent sur le tas et se conceptualise
difficilement.
Mais qu'importe, je vais ici tenter d'en faire une présentation. Je n'ai ni la prétention, ni l'ambition d'en faire plus, mais j'espère que le peu que j'en dirai sera compréhensible.
Avant de définir la notion même de sémantique, un petit saut dans le temps me semble utile.
Back in the 90's
Au début du Web, les pages Internet étaient mises en forme en
HTML. Ce langage mélange dans un même fichier style et
contenu : autrement dit, le nom des balises indiquait non
pas la fonction, mais la façon dont le texte devait être mis
en forme. <b> demandait au navigateur de mettre
le texte en gras (bold), <i>de le mettre en
italique (italic), <u> de le souligner
(underline).
À priori, rien à redire : tout comme le fait un logiciel
de traitement de texte type Word, on contrôle parfaitement ce
que l'on fait. Ou en tout cas, on en a l'impression…
car les problèmes surgissent rapidement.
Imaginons donc un site communautaire sur lequel de multiples auteurs rédigent des articles. Certains aiment mettre leurs titres en gros, d'autre les soulignent et les graissent… rapidement, on assiste à un foisonnement de style pour une même fonction.
En quoi cela pose-t-il un problème ?
D'abord, le lecteur est perdu entre les titres, sous-titres et
sous-sous-titres qui ne sont pas forcément cohérents entre eux
(l'un les mettra en orange clignotant, l'autre non).
Ensuite, l'auteur doit appliquer de multiples balises pour
afficher un unique titre. S'il a choisi de mettre en orange,
gras et souligné, chacun de ses titres sera codé
lourdement :
<font color="orange"><b><u>Mon
titre</u></b></font>. On le voit : c'est moche (plus de balises que de
contenu), peu fonctionnel (il est facile de faire une faute en
tapant les multiples balises), peu évolutif (si un jour, le
Webmaster décide de passer son site en fond orange, tous les
titres deviendront illisibles [orange sur orange] et l'auteur
devra modifier manuellement chacun des titres de chacun de ses
articles pour corriger le problème).
Enfin, les moteurs de recherche ou les personnes souffrant de
problèmes d'accessibilité qui passent par là auront du mal à
suivre l'article de façon cohérente et à le découper en
sections.
Bref, une catastrophe à tous les points de vue !
Zorro est arrivé !
Se rendant compte de ces problèmes, « on » inventa
le xHTML : une évolution du langage HTML qui se voulait
plus « sémantique » (on y arrive ! ).
Sémantique, cela signifie qu'une balise ne code pas pour de la
mise en forme mais pour une idée, une représentation
abstraite. Exit les balises bold, bienvenue à la
balise emphase ! Exit les combinaisons tordues,
bienvenue à la balise titre ! Ces balises
n'indiquent pas la façon dont le contenu doit être présenté,
mais la fonction du contenu à l'intérieur du texte.
Le lecteur attentif se posera immédiatement la question :
comment met-on en forme un titre abstrait ? Très bonne
question… qui trouve sa réponse avec un seul mot :
CSS.
CSS est un nouveau langage qui permet de « thémer »
ses balises en dehors du texte : un unique fichier
externe pour tout le site contient l'intégralité des
informations pour la mise en forme. Le webmaster précisera par
exemple que les balises titres de premier niveau (il y en a
six, qui permettent ainsi d'avoir la structure hiérarchique
habituelle titre / chapitre / sous chapitre / partie /
paragraphe / sous paragraphe) seront affichées graissés,
soulignées et en orange. Vous ne voyez pas le
changement ? Et pourtant, il est primordial ! Une
unique balise peut renfermer plusieurs informations
d'affichage. Et toutes ces informations sont centralisées au
même endroit : en modifiant un unique fichier, on modifie
toutes les occurrences de la balise sur le site. Pas besoin
d'ouvrir manuellement chaque page pour la reconfigurer, seul
le fichier principal de configuration compte. Miraculeux,
non ? C'est un rêve qui devient réalité : la forme
(le CSS) séparée du fond (le HTML), le contenu distinct du
contenant.
Mais il n'y a pas que le webmaster à sauter d'allégresse ! Les visiteurs sont heureux aussi. (Moins de code à charger, puisqu'il suffit de récupérer une seule fois le fichier de mise en forme pour l'ensemble du site. )
Le véritable point fort de la sémantique
C'est tout ? Mais alors, la sémantique, c'est juste pour les fainéants qui ont la flemme d'ouvrir leurs pages ! Et puis réduire le débit, on s'en fiche ! On a tous de l'ADSL maintenant…
C'est vrai (encore que modifier manuellement des dizaines de milliers de pages soit lassant). Mais attendez, il reste un as dans la manche de la sémantique… et cet as, c'est Google !
Car quand Big-G visite votre site, s'il croise une balise
« titre principal » (<h1>, pour
header1), il sait que cela correspond à une information
capitale de la page. Inversement, s'il rencontre une balise
petit (small), il saura que le contenu présenté ici
est annexe et pas forcément utile ou primordial sur cette
page.
Si deux pages présentent le même mot clé, l'un dans une balise
h1 et l'autre dans une balise small, il est
probable que le premier soit affiché en priorité dans la
liste. Logique, puisque le webmaster informe que ce mot clé
est la raison d'être de la page, tandis que le deuxième
signale que le mot clé est présenté en annexe, et donc pas
forcément traité explicitement dans le reste de la page.
À ce point là, vous devriez avoir compris que la sémantique correspond à toutes les informations au-delà du texte.
Aller plus loin que le xHTML de base
Tout va très bien dans le meilleur des mondes ? Hé non, car HTML n'implémente pas forcément toutes les balises nécessaires.
Un exemple concret s'impose. Si vous lisez des périodiques,
vous aurez remarqué que leurs représentations des siècles en
chiffres romains n'est pas écrit en capitales, mais en petites
capitales (small-caps,
un exemple est présent ici). Comment reproduire cet effet ? xHTML n'offre
malheureusement pas de balises toutes prêtes nommée
<century> !
Pas de panique, il y a une solution… qui passe par des
éléments « vides de sens », neutres. On les nomme
<span> et <div>.
Si je place un texte dans une balise span, il ne se passera
rien. Le lecteur ne saura même pas que la balise est
présente : elle est entièrement transparente.
En fait, ces balises sont utilisées avec un attribut spécial
que l'on appelle class (et que l'on peut appliquer à
n'importe quelle balise, j'y reviendrais).
Ces classes sont libres, c'est-à-dire que vous pouvez choisir
vous même comment vous les nommez et comment vous les
utilisez.
Nous pouvons donc définir une classe century qui mettra en petites majuscules et ajoutera automatiquement un e derrière. Tout cela est possible avec les règles CSS, et il suffira de marquer <span class="century">XIX</span> pour obtenir le rendu voulu. Et si un jour on décide de remplacer le e par un ème, cela ne posera aucun problème, puisque cette information sémantiquement vide n'est pas codée directement dans le texte, mais dans le style.
Comme je le disais, on peut aussi classer une balise normale ; ce qui permet par exemple de designer différemment le premier sous titre de chaque section, ou de définir différents types d'emphase (mot important, mot traduit, mot étranger… ). Les possibilités sont presques infinies !
L'utilisation de la sémantique permet donc de garder un contenu cohérent et facilement éditable, sans pour autant sacrifier à la mise en forme du texte.
Dangers à éviter
Attention cependant, deux écueils se présentent à l'éditeur de contenu « sémantique ».
Le premier, c'est de vouloir abuser des bonnes choses. Après tout, si Google apprécie les titres, pourquoi ne pas mettre tout mon texte en titre ? Il suffit de dire dans le CSS que la balise titre doit s'afficher comme du texte normal, et l'utilisateur n'en saura rien… et j'aurais floué Google. Dans le concept, c'est vrai… dans la pratique, des générations de webmasters s'y sont tentés et Google n'est pas bête ; il sait détecter une utilisation abusive. De plus, si vous procédez ainsi, du contenu secondaire sera mis en avant dans les résultats de recherche au détriment du vrai contenu : bref, vous y perdez plus que ce que vous y gagnez.
Seconde idée, encapsuler sans réfléchir. Je mets mon article dans une boîte qui contient deux articles qui est dans une boîte avec tous les articles que je place dans une boîte qui contient le contenu de la colonne centrale de mon site, laquelle boîte est doublée avec une classe différente que je place dans une boîte englobant l'intégralité de mon site que je place dentre les balises body. Stop ! On peut effectivement obtenir ce type d'architecture si votre contenu est complexe, mais préférez toujours une structure simple et concise. Dans la même optique, minimisez le nombre de tableaux : sémantiquement, un tableau permet de représenter des données, pas de paramétrer la façon dont ces données doivent être affichées ! C'est le cheval de bataille des webmasters modernes : éradiquer l'ennemi <table> lorsqu'il est utilisé pour faire un design en colonnes (menu à gauche, contenu au milieu, informations à droite par exemple).
En conclusion
Voilà qui clôt cette introduction sommaire au problème
complexe de la sémantique.
J'espère que dorénavant, vous saurez réfléchir au texte, mais
aussi aux informations implicites qu'il doit transporter avec
lui. Plus que Google, c'est l'ensemble de vos lecteurs qui le
ressentira et l'appréciera !