The Wayback Machine - https://web.archive.org/all/20061104214204/http://blog.dreams4net.com/html-et-pas-xhtml
Dreams4Net >> Articles : Technologie, Web et Opinions

XHTML ? non, HTML !

Le 18 avril 2003,

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.