Le XHTML servi en tant que HTML

La plupart du temps, le XHTML est servi en tant que HTML, avec le type MIME text/html, qui est reconnu sans difficulté par les navigateurs.

Le XHTML servi en tant que XML

Pour que le XHTML soit servi en tant que XML, il faut utiliser le type MIME application/xhtml+xml, en le déclarant dans le code XHTML. De plus, le XHTML servi en tant que XML oblige à l'utilisation du prologue XML et proscrit l'attribut HTML lang au profit de son équivalent en XML xml:lang (l'interdiction de l'attribut lang concerne surtout le XHTML 1.1). Cela donne le code suivant :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Titre du document</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=UTF-8" />
<meta name="robots" content="none" />
</head>
<body>
<p>Contenu du document</p>
</body>
</html>

Indiquer le type MIME dans meta http-equiv="Content-Type" ne suffit pas : il faut aussi s'assurer que le serveur soit correctement configuré, de façon à ce qu'il puisse envoyer le bon type MIME comme valeur de l'en-tête Content-Type.

Un document XHTML servi en tant que XML sera affiché avec succès sous Firefox, Opera, Safari, Google Chrome et Konqueror. En revanche, Internet Explorer, y compris dans sa version 8, l'ignorera purement et simplement, le traitant comme un fichier en téléchargement (sauf si le serveur hébergeant le document XHTML en question retourne un en-tête Content-Type: text/html).

Autre souci : la plupart des lecteurs d'écran, Jaws en tête, ne prennent pas en charge l'attribut xml:lang, surtout en cas de changement de langue au cours du document XHTML.

Conclusion

À moins que vous ne maîtrisiez le parc informatique des utilisateurs finaux (cas, par exemple, d'un Intranet consultable depuis des postes utilisant par défaut un navigateur récent et très respectueux des standards du Web, comme Firefox), servez les documents XHTML uniquement en tant que HTML afin de garantir leur accès au plus grand nombre d'utilisateurs, ce qui veut dire aussi qu'il faut, pour signaler tout changement de langue, utiliser l'attribut lang (accompagné ou non de xml:lang), et se contenter du XHTML 1.0.

Pages de test

Vous pouvez consulter la page de test d'une page XHTML servie en tant que XML (XHTML 1.0 Strict) et la page de test d'une page XHTML servie en tant que XML (XHTML 1.1) pour avoir un aperçu du résultat sous votre navigateur.