Bonjour,
Une simple piqure de rappel pour compléter l'intervention de jpv:
la sémantique ne vise pas à transmettre une signification à l'utilisateur. Elle ignore totalement l'utilisateur. Elle vise les machines uniquement.
(Que ces machines soient côté client, côté serveur ou ailleurs, qu'elles travaillent directement pour l'utilisateur ou non, peu importe : elles peuvent être aussi bien l'une des extensions de navigateur mentionnées dans les exemple ci-dessous qu'un CMS, un robot d'indexation ou un proxy...)
Ce qui vise l'utilisateur, c'est la présentation. Les éléments HTML ont, dans tous les medias, une présentation par défaut, c'est à dire des styles CSS par défaut (ou leur équivalent).
On confond très souvent ces styles de l'user agent avec de la sémantique, alors qu'ils n'ont rien à voir avec celle-ci : le fait qu'un paragraphe
p s'affiche par défaut sous forme d'un bloc de texte, ou que des cellules de tableaux s'affichent les unes à côté des autres... n'est pas de la sémantique. C'est la couche de présentation par défaut de l'UA, qui est d'ailleurs modifiable librement, alors que la sémantique, elle, ne l'est pas.
Pour donner quelques exemples de sémantique réelle et de son exploitation :
- La sémantique de
label, c'est effectivement le
for= et l'
id du contrôle qui sont exploitables par exemple par le navigateur graphique lors d'un clic sur le contenu de l'élément label.
- La sémantique de
q et de
blockquote, ce n'est pas de dire à l'utilisateur "ceci est une citation". C'est leur attribut
cite qui permet par exemple à
un script d'exploiter l'url de la source pour générer un lien vers celle-ci.
- La sémantique de
dt-
dd et celle de
dfn : permettre à
google:define par exemple d'extraire les couples
terme/
définition et d'agréger en une seule page Web les définitions d'un même terme recherchée sur le Web. Sémantique floue, d'ailleurs, puisque rien ne définit l'élément englobant la définition dans le cas de
dfn. Sémantique très mal exploitée également par Google:define et surtout par les sites eux-mêmes puisque c'est finalement l'élément de présentation
<b> qui est le plus exploité par ce script !
- La sémantique de
cite, c'est effectivement de renseigner la source de la citation. De manière très floue encore, car rien ne permet de différencier auteur et éditeur dans
<cite>Jules Dupont</cite>, <cite>Editions Eyrolles</cite>, de manière à rendre ces informations exploitables pour générer un index des auteurs cités, par exemple (il faut recourir à des
class="author... comme le proposait
Karl Dubost, et surtout s'entendre sur un vocabulaire normalisé, créer ce qu'on appelle un
micro-format, c'est à dire étendre HTML en lui ajoutant la sémantique manquante)
- La sémantique des
h1,
h2... : permettre à
un script d'
extraire la table des matières d'un document (éventuellement navigable). Sémantique approximative d'ailleurs, puisque le respect de l'ordre hiérarchique des titres n'est pas imposé par la norme HTML (il faudra attendre WCAG2.0 pour cela, c'est à dire à nouveau une norme bouchant les trous sémantique du HTML).
- la sémantique HTML, ce sont encore les
liens relatifs permettant
la navigation dans une collection de ressources.
- Et bien-sûr, les éléments
meta avec l'exemple des
métadonnées DC (ignorées par 99% du Web publique, mais très utilisées dans des traitements internes de documents)
On s'aperçoit rapidement :
- que cette sémantique HTML est assez pauvre, très imparfaite, et beaucoup d'éléments n'ont en fait pas de véritable sémantique exploitable (les paragraphes, les listes) ou n'ont qu'une sémantique minimale qui ne suffit pas aux besoins (les hyperliens, exemple de la métadonnée
nofollow créée unilatéralement par Google). Ce n'est pas tout à fait pour rien que le W3C s'est engagé dans quelque-chose de totalement différent du HTML avec le
web semantique (voir
cet exemple fonctionnel), ou qu'on a vu apparaître d'autres démarches parallèles ou concurrentes:
micro-formats et
HTML5
- que ce peu de sémantique HTML est généralement ignoré et non implémenté par les navigateurs Web modernes, qui sont essentiellement des
machines à afficher (pas de fonctionnalité de génération de TOC par défaut, attribut
cite ignoré, pas d'exploitation des
link rel de navigation dans une collection de documents, pratiquement aucune exploitation des éléments
meta etc.). Il faut recourir à des extensions Firefox, des UserJS Opera, etc. pour réaliser les implémentations.
C'est un cercle vicieux : la sémantique HTML bien que limitée,pouvait se développer et pourrait être beaucoup plus exploitée qu'actuellement, mais:
- les navigateurs ont été conçus historiquement avant pour
présenter le contenu sans tenir compte de la "couche" de données sémantiques.
- Du coup, la sémantique HTML est restée largement ignorée par les auteurs de sites Web...
- Ce qui n'incite pas les navigateurs, les moteurs de recherche, les traducteurs, les CMS etc. à en tenir compte. Un exemple amusant: même un CMS aussi bien conçu que DotClear propose un bouton ajoutant au billet un
blockquote... sans attribut
cite ni boîte de dialogue permettant la saisie de celui-ci...
Modifié par Laurent Denis (04 Mar 2006 - 10:10)