PRATIQUE XML 
Expliquez-moi... Pourquoi il est préférable d'utiliser HTML plutôt que XHTML
 
Dépendantes du type MIME, les pages XHTML sont de ce fait traitées le plus souvent comme des pages HTML non valides. Un contexte qui rend l'usage de HTML4 plus recommandé. (08/02/2007)
Cet article a été corrigé le 15 février 2007.

  Forum

Réagissez dans les forums de JDN Développeurs

Les types MIME ont plus d'importance sur le Web qu'on ne leur en donne. Chacun sait que tout document transféré sur Internet est accompagné d'un type MIME approprié, ce dernier étant utilisé par le logiciel client (donc, le navigateur Web) pour déterminer comment le traiter. Pour que tout fonctionne correctement, il faut que le serveur Web qui envoie le fichier détermine correctement le type (le plus souvent grâce à l'extension du fichier), et que le navigateur client sache reconnaître un type, et dispose de commande pour chacun.

Ainsi, une image JPEG disposera d'un type image/jpeg et sera affichée directement, tout comme une page HTML avec son type text/html ou un fichier texte de type text/plain. audio/mpeg déclenchera dans la plupart des cas le lancement d'un plugin de lecteur de fichier MP3, et le type application/xml d'un fichier XML (brut ou inconnu) en provoquera le téléchargement sur l'ordinateur du client. Plus généralement, les fichiers de type XML ont +xml à la fin de leur type MIME pour s'assurer du bon traitement, par exemple application/atom+xml pour Atom.

A priori, tout semble fait pour que le monde continu de tourner - mais c'était sans compter sur HTML. Le successeur de HTML est défini, dans sa version 1.0, comme une "XML-isation de HTML". En d'autres termes, XHTML 1.0 est censé apporter la rigueur légendaire de XML au langage HTML notoirement laxiste - ou, plus précisément, imposer les règles de traitement strict de l'analyse XML, en lieu et place de celles très permissives de l'analyse HTML.

L'objectif est de "forcer" la création de page bien formée - une page invalide n'est pas censée être affichée -, et donc de soulager les navigateurs d'une correction du balisage, trop souvent obligatoire en HTML, et très demandeuse en ressources, ce dont ne disposent pas les systèmes mobiles par exemple. Un navigateur purement XHTML serait donc logiquement plus léger (pas de fonctionnalités de correction), plus rapide et plus sûr. En plus de cela, les documents XHTML bien formés offrent l'avantage de pouvoir être traités de la même manière que les documents XML, et donc facilitent l'extraction de données, ce qui apporte une avancée majeure pour le Web. Les documents XHTML offrent par ailleurs un meilleur support pour l'accessibilité, autorise une qualification des informations plus nette, et globalement facilite le développement en offrant un cadre rigoureux sur lequel s'appuyer.

Comme tout autre document transféré sur Internet, les pages XHTML ont un type MIME - et vu que le XHTML ne peut pas être traité de la même manière que le HTML, ce type n'est pas text/html mais application/xhtml+xml. XHTML doit donc être traité comme du XML. Plus précisément, XHTML 1.1, car pour XHTML 1.0 les deux types sont valides.
Et c'est ici que le bât blesse. Il y a encore quelques années, de nombreux serveurs Web ne connaissaient pas application/xhtml+xml, donc servaient les documents XHTML avec pour type MIME text/html. Plus grave encore, Internet Explorer, même dans sa septième version, ne reconnaît pas XHTML, et le fait passer par son analyseur HTML comme de la vulgaire "soupe de balise". Précisons que XHTML 1.0 Transitional, simple port de HTML 4.01, ne subit pas ce problème...

A priori, les pages s'affichent, donc il n'y a pas de problème. Sauf qu'en servant un document XHTML valide avec le mauvais type MIME, les développeurs diffusent en fait un document HTML non valide, aux yeux du navigateur. Tous les avantages de XHTML sont donc perdus, notamment la combinaison avec MathML ou SVG. Bien sûr, la situation s'est améliorée côté serveurs, et les navigateurs modernes comme Opera ou Firefox acceptent ce type MIME, comme il se doit.

Mais les développeurs de ces navigateurs conseillent eux-mêmes d'utiliser HTML plutôt que XHTML : pour eux, il est préférable de servir un document avec le bon type MIME, et le type application/xhtml+xml ne se justifie vraiment que pour les documents qui combinent plusieurs espaces de noms XML (XHTML + MathML, XHTML + SVG, ...). Notons par exemple que selon les développeurs de Firefox, celui-ci affiche les documents XML une fois chargés, plutôt que progressivement comme c'est le cas pour HTML : le type application/xhtml+xml priverait donc les internautes du chargement progressif de la page (c'est cependant corrigé pour les versions à venir du navigateur). De leur côté, les développeurs Safari recommandent même de ne pas utiliser le type application/xhtml+xml, au risque de perdre les internautes utilisant Internet Explorer.

Finissons en précisant que le jour où IE reconnaîtra application/xhtml+xml correctement, il ne suffira pas de changer le type MIME envoyé par le serveur. Le traitement des documents est en effet bien différent entre les deux types : <script> et <style> nécessitent une réécriture de leur contenu, les CSS sont interprétées légèrement différemment, le DOM a quelques différences, document.write() ne marche pas en XHTML, /> a une sémantique bien différente en HTML "strict", ...
En passant de text/html à application/xhtml+xml le jour venu, un webmaster doit s'attendre à de nombreux dysfonctionnements qui n'apparaissaient pas auparavant. Seule solution à l'heure actuelle : faire en sorte que le serveur HTTP ou le langage dynamique (PHP ou autre) utilise text/html pour les navigateurs qui ne reconnaissent pas application/xhtml+xml, et application/xhtml+xml pour les autres...

Dans les faits, le seul moyen à l'heure actuelle de servir simplement du contenu standard et valide, reste d'utiliser HTML 4.01. Ce standard est toujours soutenu par le W3C - il profite d'ailleurs d'un regain d'intérêt face à l'échec relatif de XHTML, et est correctement reconnu tant par les serveurs Web que par tous les navigateurs.
À cause d'Internet Explorer et d'un lourd passif, l'utilisatin stricte de XHTML n'a malheureusement pas encore de réalité pratique, même si son adoption est fortement poussée par les promoteurs des standards. Cela extrêmement dommageable pour l'avenir du Web, XHTML apportant de réels plus, notamment en ce qui concerne l'accessibilité.

En définitive, comme souvent, il faut adopter le standard qui convient le plus à sa cible...
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page