XHTML

HTML peut voyager sur le réseau vers un navigateur soit en syntaxe HTML soit en syntaxe XML appelée XHTML.

HTML5 et HTML/XHTML

La norme HTML5 définit ces deux syntaxes. Le type MIME (envoyé dans l'en-tête HTTP Content-Type) indique le choix de la syntaxe : pour XHTML, le type MIME sera application/xhtml+xml, sinon text/html.

Cet exemple montre un document HTML et un document XHTML inclus dans l'en-tête HTTP :

Document HTML

html
HTTP/1.1 200 OK Content-Type: text/html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>HTML</title>
  </head>
  <body>
    <p>Je suis un document HTML</p>
  </body>
</html>

Document XHTML

xml
HTTP/1.1 200 OK
Content-Type: application/xhtml+xml

<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>XHTML</title>
  </head>
  <body>
    <p>Je suis un document XHTML</p>
  </body>
</html>

Type MIME contre DOCTYPE

Avant HTML5, les deux spécifications distinctes définissaient les deux syntaxes ( HTML 4.01 et XHTML 1.0 ). Selon la norme XHTML1, vous pouvez utiliser XHTML en déclarant un DOCTYPE spécial. Cependant, aucun navigateur n'a jamais implémenté cela, et la norme HTML5 a inversé la décision. Si votre page est envoyée en tant que texte/html, vous n'utilisez pas XHTML.

Au lieu de cela, le type MIME correct doit être présent dans l'en-tête HTTP Content-Type. Si vous ne mettez que le type MIME dans une balise meta HTML comme = <meta http-equiv...>, il sera ignoré et traité comme du texte/html.

Si vous diffusez vos pages en tant que texte/html et que vous croyez que vous écrivez XHTML, vous pouvez rencontrer plusieurs problèmes, comme décrit dans ces articles :

Prise en charge

La plupart des navigateurs prennent actuellement en charge XHTML, y compris Firefox, Chrome, Safari, Opera et Internet Explorer (depuis IE 9). (Les navigateurs Internet Explorer 8 et plus anciens affichent à la place une boîte de dialogue de téléchargement pour les types de fichiers inconnus lorsqu'ils voient un document XHTML avec le type MIME XHTML correct.)

Sachez également que de nombreuses bibliothèques et outils de développement JavaScript populaires ont un support limité ou inexistant pour XHTML.

Différences avec HTML

Voir Utilisation correcte de CSS et JavaScript dans les documents XHTML pour une liste partielle des différences entre HTML et XHTML.

Outils

Voir aussi