This website will not display properly without JavaScript enabled - Ce site ne peut pas s'afficher correctement sans JavaScript - Strony nie wyświetlą się poprawnie bez JavaScript.

DOCTYPE : Carte d'identité d'une page Web

Cet article a +5 ans. Son contenu n'est probablement plus d'actualité.

Créer des pages propres impose le respect des règles. Sans la balise DOCTYPE, une page Web ressemble à une boutique qui n'a pas de nom, ni de vitrine pour vous renseigner au sujet de son contenu.

Carte d'identité d'une page Web

La balise <!DOCTYPE ...> est obligatoire et doit se trouver tout au haut du code de chaque page Web (pour la voir, demandez à votre navigateur d'afficher la source de la page que vous êtes en train de visiter). Elle renseigne les navigateurs sur le langage utilisé pour créer cette page et quelles règles appliquer pour interpréter correctement son code.

A titre d'exemple, la présente page démarre par le DOCTYPE suivant :

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

Il informe le navigateur que la page est écrite en XHTML 1.0 Strict et que, pour l'afficher correctement, il faut utiliser les règles DTD (Document Type Definition) disponibles à l'adresse http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd.

HTML générique, casserole du Web

A l'aube du Web, avant l'apparition des standards, on se satisfaisait de la balise <html> qui, comme son nom indique, signale la présence de code HTML. Avec la prolifération des langages de programmation et de leurs versions, cette information est devenue insuffisante. En effet, comment un navigateur peut-il deviner d'après une balise aussi générique que <html>, s'il a à vous afficher une page en HTML 2 ou 3 ou 4, ou en XHTML ou, bien, en un autre langage de programmation ?

Et, pourtant, la présence des pages Web sans DOCTYPE est encore impressionnante. Prenez le temps de regarder la source des pages que vous visitez. Si, pour les amateurs, il s'agit souvent de l'ignorance de normes, pour les pros cette "omission" du DOCTYPE relève de la nonchalance ou de l'incompétence.
Quelle qu'en soit la raison, c'est une casserole que le Web traîne derrière lui.

Contraints de s'en accommoder, les navigateurs utilisent de mécanismes complexes et très lourds - une sorte des garde-fous - dédiés à deviner ce qui n'est pas explicité, ainsi qu'à rattraper des erreurs de programmation.

Cette casserole complique la conformation de navigateurs aux nouvelles technologies du Web. Tel semble être le cas d'Internet Explorer pour Windows qui, considéré par beaucoup comme l'un des meilleurs garde-fous, ne parvient pas à se conformer aux spécifications CSS (Cascading Style Sheets - feuilles de style), alors que Microsoft a participé à leur élaboration (c'est du moins l'excuse que je cherche à Microsoft).

L'absence de DOCTYPE autorise les navigateurs à interpréter la page qu'ils affichent selon l'idée qu'ils s'en font, eux. Autrement dit : on leur laisse la main libre. Rien ne vous garantit qu'ils le feront correctement, d'autant moins que chaque navigateur dispose de son garde-fou particulier.

Le DOCTYPE rend possible la validation du code

La présence de DOCTYPE apporte également un avantage de taille : elle permet de vérifier si le code d'une page Web ne contient pas d'erreurs de programmation. Il existe des services en ligne qui s'en chargent, les meilleurs étant les "validators" de W3C. Sans être programmeurs vous-mêmes, vous pouvez ainsi juger de la qualité technique des pages qu'on vous fournit. Car, évidemment, la seule présence de DOCTYPE n'est pas une garantie de programmation propre.

Tout programmeur sérieux se doit de valider le code de ses pages, ne serait-ce que par respect envers les utilisateurs.

Familles de DOCTYPE HTML

Il existe trois familles de DOCTYPE dans la plupart de versions de HTML :

  • Transitional
  • Strict
  • Frameset

Le Transitional est une solution mi-figue, mi-raisin, et est destiné essentiellement à faciliter la conformation de sites Web aux nouvelles spécifications techniques de W3C. Il autorise l'utilisation de certains éléments s'étant dépréciés, ce qui simplifie la vie aux développeurs contraints d'accommoder des navigateurs plus anciens ou des sites lestés par les vieilles techniques. Le Transitional n'existe plus dans le XHTML 1.1.

Le Strict impose une écriture rigoureuse et épurée. Il peut sembler contraignant, mais l'investissement en vaut la peine. Le Strict est le plus facile à majorer par la suite, et il fait aussi l'unanimité parmi les navigateurs. Rien d'étonnant : étant "strict", il ne leur complique pas la tâche.

Jetez un coup d'oeil sur le tableau comparatif "Doctype Sniffing" élaboré par Helsinki University of Technology : Activating the Right Layout Mode Using the Doctype Declaration . Vous y verrez que les pages écrites en Strict sont les plus sûres.

La dernière famille, le Frameset, définit les règles de programmation des pages construites de plusieurs pages dont chacune loge dans son propre cadre (frame). Cette famille tend à disparaître car elle pose des problèmes d'accessibilité. Elle n'existe plus dans le XHTML 1.1.

Depuis l'avènement du CSS, les frames peuvent être avantageusement remplacés par le positionnement fixe d'éléments à l'écran (enfin... elles le seront pleinement quand Explorer pour Windows apprendra le positionnement fixe, comme l'ont déjà fait ses concurrents).

Perspectives

L'introduction de DOCTYPE rend possible la création des langages personnalisés pour le Web. Il faut pour cela construire un document DTD décrivant ses règles d'interprétation, puis indiquer son adresse dans le DOCTYPE.
En théorie, cela est possible déjà aujourd'hui. En pratique, il est prudent d'attendre avant de s'y lancer. Tous les navigateurs ne respectent pas encore les directives "personnalisées".

Mot de la fin

Que nous soyons commanditaires ou créateurs, nous pouvons tous contribuer à ce que le Web meilleur voie le jour plus vite. Il suffit pour cela de respecter ou de faire respecter les spécifications de W3C.

Toute page Web sérieuse se doit de contenir son DOCTYPE, la déclaration du type de document qu'elle est.

Postes similaires