Aller au contenu

Déclaration <!DOCTYPE> HTML

La déclaration <!DOCTYPE> est la première ligne de code d'un document HTML ou XHTML. Elle spécifie la version HTML utilisée dans le document. Chaque document HTML doit commencer par cette déclaration afin que les navigateurs affichent la page en Mode Standard plutôt qu'en Mode Quirks, garantissant ainsi la conformité aux normes web. En HTML 4.01, cette déclaration fait référence à une Définition de Type de Document (DTD), qui spécifie la structure et les éléments légaux d'un document XML.

La déclaration <!DOCTYPE> est placée avant la balise <html>. La déclaration n'est pas sensible à la casse.

Syntaxe

Syntaxe DTD héritée

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

Paramètres de <!DOCTYPE>

Élément racine — l'élément parent qui contient tous les autres éléments. Pour HTML, il s'agit de la balise <html>.

Publicité — indique si la DTD est PUBLIC ou SYSTEM. Pour HTML/XHTML, la valeur est PUBLIC.

Enregistrement — indiquait historiquement le statut d'enregistrement ISO (+ ou -). Pour les DTD du W3C, cela est généralement omis.

Organisation — le nom du développeur de la DTD. Pour HTML/XHTML, il s'agit du W3C.

Type — le type de document. Pour HTML/XHTML, la valeur est DTD.

Nom — identifiant unique décrivant la DTD.

Langue — la langue du document (deux lettres majuscules). Pour HTML/XHTML, il s'agit généralement de EN.

URL — l'URL de la description du type de document (par ex., https://www.w3.org/TR/html4/strict.dtd).

Types de déclaration <!DOCTYPE> pour HTML

Les documents HTML modernes utilisent une déclaration unique et simplifiée. L'HTML 4.01 hérité en comportait trois types :

HTML5

html
<!DOCTYPE html>

Strict - contient tous les éléments et attributs HTML. Cependant, les éléments de présentation ou dépréciés ne sont pas inclus.

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

Transitional - contient tous les éléments et attributs HTML, y compris les éléments de présentation et dépréciés. Les cadres (frames) ne sont pas autorisés.

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

Frameset - est équivalent à Transitional, mais autorise l'utilisation de cadres (frames).

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

Exemple de déclaration <!DOCTYPE> HTML :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Elements example</h2>
    <p>This is some paragraph.</p>
    <p>This is another paragraph <br /> with  line break.</p>
  </body>
</html>

Résultat

paragraph

Types de déclaration <!DOCTYPE> pour XHTML

Voici les types de déclaration <!DOCTYPE> pour XHTML.

XHTML 1.0 Strict

Cette DTD inclut tous les éléments et attributs HTML, à l'exception des éléments de présentation ou dépréciés. Cette DTD n'autorise pas les cadres (frames).

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

XHTML 1.0 Transitional

Cette DTD inclut tous les éléments et attributs HTML, ainsi que les éléments de présentation et dépréciés. Les framesets ne sont pas autorisés.

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

XHTML 1.0 Frameset

Cette DTD est similaire à XHTML 1.0 Transitional, mais les framesets sont autorisés.

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

XHTML 1.1

Cette DTD est équivalente à XHTML 1.0 Strict, mais permet d'ajouter des modules (par ex., pour fournir le support Ruby pour les langues d'Asie de l'Est).

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

Pratique

Parmi les affirmations suivantes concernant la déclaration DOCTYPE HTML, lesquelles sont correctes ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.