XHTML ? non, HTML !
Question qu'on ne m'a pas posé mais à laquelle
j'aimerai répondre : pourquoi du HTML sur ces pages plutôt que du
XHTML ?
Je vois pas mal de gens sur des forums d'aide qui demandent de l'aide pour passer du HTML au XHTML (ou plus exactement du HTML transitionnel au XHTML strict). J'ai parfois un peu de mal à en comprendre les raisons, je crois que ça tient principalement à une épidémie de versionnite aiguë. Pour ceux qui ne connaissent pas il s'agit d'une maladie extrêmement grave qui oblige les victimes à utiliser à chaque fois la dernière version pre-alpha-0.01 en y ajoutant les patch et modifications venant de trois obscures inconnus mais qui font très tendance, ça même si finalement la version précédente contenait déjà toutes les fonctionnalités utiles. Ce virus fait des dégâts autant chez les non informaticiens que les geeks (la plupart d'entre eux tournent sur un MS-Windows en cours de développement ou une Gentoo-dev, Debian-SID, Mandrake-Cooker suivant les cas).
Le XHTML 1.0 ne m'apporte rien par rapport au HTML 4.01, quand je dis rien ce n'est rien. Il n'y a que deux différences : le doctype et la syntaxe XML au lieu de SGML. Il existe même des logiciels qui font la conversion automatique. Tous les navigateurs actuels savent lire le HTML, ceux qui ont besoin d'une source XML pourront faire une conversion simple et automatique. Du coup, pourquoi pas HTML 4 ?
Je sens bien les réponses « oui mais pourquoi pas XHTML
alors si c'est pareil ? »
. La réponse est simple :
ça n'est pas compatible. Contrairement à ce que beaucoup croient le
XHTML n'est pas compatible avec le HTML et n'est pas du HTML valide.
À la base XML impose une fermeture pour tous les tags, on se retrouve avec
des <meta />
par exemple avec XHTML. Sauf que la syntaxe <xxxx / est nommée net
en SGML et
a une signification particulière ; un <br /> en HTML devrait
afficher >
sur le rendu de la page, ce dernier
>
ne faisant pas parti du tag. En fait, le rendu
d'une page XHTML interprétée en HTML est correct avec l'essentiel
des navigateurs mais devrait se retrouver mal rendu avec un moteur SGML
strict respectant la norme.
Le XHTML c'est nul alors ?
non,
c'est utile. Mais je suis simplement contre le fait d'envoyer deux
types incompatibles sous le même Content-Type (text/html
dans notre cas,
voir mon
précédent article sur les types mime) car alors c'est
demander explicitement au navigateur d'avoir un comportement non
standard sur le moteur HTML classique (ce qui est déjà le cas mais au moins
je ne participerai pas au problème). Pour moi ça revient un peu à mentir sur
le contenu en espérant que le navigateur aura un moteur assez peu
respectueux du format HTML/SGML pour que ça passe). Je sais que la norme
XHTML tolère le
text/html à quelques conditions mais c'est à mon avis une
mauvaise idée. Le seul cas où je conçois l'envoi d'une page XHTML en
text/html
c'est si tout le code est aussi du HTML
conforme, c'est à dire que tous les éléments ont une balise fermante
différenciée de la balise ouvrante (ce qui exclu les fins de lignes, les
méta-données, les balises de lien dans les entêtes, etc.). La bonne solution
est d'employer un type de contenu application/xhtml+xml
ou un des types Mime du xml, sauf que pour l'instant peu de navigateurs
savent l'interpréter, donc l'intérêt est minime. À l'heure
actuelle ne pas avoir de version HTML d'une page me semble un mauvais
choix pour l'accessibilité.
Ça veut dire que le XHTML ne sert à rien alors, vu
qu'on ne peut pas l'envoyer comme il faudrait ?
si,
mais on ne peut pas encore se passer du HTML. Lors de la première version de
ce site les utilisateurs de Mozilla se voyaient servir une page XHTML, les
autres une page HTML. Pas de détection de navigateur derrière le principe,
juste de la négociation de contenu : Avec chaque requête du
navigateur est envoyée une entête disant quels formats sont acceptés, il
s'agit simplement d'envoyer le XHTML à ceux qui affirment pouvoir le
relire, et du HTML aux autres. Cette méthode simple peut être mise en
application le temps que le XHTML soit largement supporté et qu'on
puisse servir du XHTML avec le bon type Mime. J'ai simplement arrêté de
fournir le XHTML car ce site est en
développement actif et maintenir synchrones deux feuilles de transformations
pour toutes les modifications me prenait trop de temps pour ce que ça
apportait (c'est à dire rien).
Le XHTML c'est une bonne direction, une direction vers un format plus simple à interpréter par les moteurs informatiques et où l'utilisation de plusieurs formats dans un même document peut se faire facilement grâce à des espaces de nom. C'est une direction, mais il faut attendre encore un peu avant de pouvoir se couper du HTML. Entre temps, à moins qu'un jour je ressente le besoin d'utiliser XML pour une fonctionnalité (par exemple pour rajouter du SVG ou autre), le seul format qui me parait pertinent est le HTML. De toute façon pour basculer en XHTML j'ai exactement une ligne à changer dans ma feuille de transformation donc je suis prêt pour le jour où…
Vous pourrez trouver des informations sur la question dans
un
document de Ian
Hickson, notamment à la partie The Myth of
"HTML-compatible XHTML 1.0 documents"
. Vous pouvez vous
reporter aussi à un article similaire sur le sujet, fait le 21
mai 2003, plus spécifique au XHTML 1.1.

