Il existe plusieurs doctypes, selon le langage (HTML ou XHTML), la version et le mode.

Doctypes pour HTML 4.01

En HTML 4.01, il existe trois doctypes correspondant chacun à un mode. À noter que, pour chacun d'entre eux, le nom de l'élément racine (HTML) peut s'écrire indifféremment en majuscules ou en minuscules.

Doctype de HTML 4.01 strict

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Doctype de HTML 4.01 transitionnel

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Doctype de HTML 4.01 jeu de cadres

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

Doctype pour HTML 5

En HTML 5 traité en tant que HTML, un seul doctype est prévu, dont la syntaxe est simplifiée par rapport à celle d'un doctype classique (la raison est indiquée dans le document du W3C sur les différences entre HTML 4 et HTML 5, document traduit en français).

<!DOCTYPE html>

Doctypes pour XHTML 1.0

En XHTML 1.0, il existe trois doctypes pour la même raison qu'en HTML 4.01. À noter que le nom de l'élément racine (html) doit être en minuscules.

Doctype de XHTML 1.0 strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Doctype de XHTML 1.0 transitionnel

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Doctype de XHTML 1.0 jeu de cadres

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Doctype pour XHTML 1.1

Le XHTML 1.1 étant une modularisation de XHTML 1.0 Strict, un seul doctype est fourni.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Doctype pour XHTML 2

Un seul doctype était prévu pour la future version majeure de XHTML, dont le développement a été arrêté par le W3C au profit du HTML 5.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd">

Importance du doctype

Il convient de déclarer le type de document HTML ou XHTML non seulement pour le valider, mais aussi pour qu'il soit interprété par les navigateurs de façon aussi proche que possible des standards.

En effet, les navigateurs peuvent utiliser des modes de rendu différents : le mode de rendu standard et le mode appelé Quirks, le basculement du premier au dernier s'appelant le doctype switching. Cette technique fut mise au point par Microsoft pour la sortie d'Internet Explorer 5 pour Mac, en 2000, afin d'offrir le choix au développeur entre un mode standard implémentant le modèle de boîte du W3C et un mode compatible avec le modèle de boîte de Microsoft (tel qu'il est implémenté dans les versions 5 et 5.5 d'Internet Explorer pour Windows). Elle fut, ensuite, implémentée dans Internet Explorer pour Windows à compter de la version 6 et adoptée par les navigateurs concurrents (Firefox et Opera, notamment). Le choix du mode de rendu s'effectue au niveau du doctype.

Le mode Quirks sera utilisé dans les cas suivants :

  • absence de doctype,
  • doctype erronné,
  • doctype ne renseignant pas la version de HTML ou de XHTML utilisée,
  • doctype correspondant à une version de HTML inférieure à la 4,
  • doctype sans l'URL (sauf pour le doctype HTML 4.01 Strict),
  • utilisation du prologue XML (pour Internet Explorer 6 seulement),
  • présence de caractères autres qu'une espace et de bouts de code autres que le prologue XML avant le doctype (pour Internet Explorer seulement).

En revanche, pour le doctype de HTML 5 et pour un document traité en tant que XML (pourvu d'un prologue XML, mais sans doctype), c'est le mode standard qui est utilisé.

Autrement dit, pour éviter de constater que les marges automatiques ne sont pas prises en charge ou que les blocs ont l'air moins larges que prévu, renseignez toujours un doctype complet ne comportant ni erreur de frappe ni oubli (si besoin est, copiez le doctype qui vous intéresse parmi ceux indiqués plus haut dans cet article) et utilisez les versions actuelles de HTML et de XHTML : le doctype switching n'est pas pour nous, comme l'a dit Laurent Denis.