Le DOCTYPE est une instruction dont l'objectif est d'indiquer dans quelle version HTML votre page web a été créée. Sans cette indication de version, les navigateurs Internet en sont quitte pour échafauder des hypothèses.
Il y a fort à parier que l'hypothèse de départ ne sera pas celle qui
convient à votre page et dès lors, vous pourriez être particulièrement
désappointé de voir le rendu de votre site, notamment dans les navigateurs
conformes aux standards du web. En fait, sans déclaration
DOCTYPE les navigateurs considèrent que le code de votre site a
dû être composé dans les année 1990. Nous gageons que vous ne souhaitez pas
que les browsers vous traitent ainsi !
Aujourd'hui … tout site qui se respecte mettra un
DOCTYPE pour satisfaire aux normes. Même le W3C recommande (et
une recommandation dans le chef du W3C vaut obligation) de mentionner le
DOCTYPE de vos documents. Voyez à ce propos la page suivante :
Don't
forget to add a doctype.
En résumé la déclaration DOCTYPE sert à identifier la version du (X)HTML que vous avez utilisé. Les navigateurs utilisent cette information pour afficher votre page conformément à la version indiquée. Les validateurs de page font un usage similaire de la déclaration DOCTYPE et vous informeront des constructions illicites possibles en fonction de ladite version.
Plusieurs instructions de DOCTYPEs sont possibles. Choisir un
DOCTYPE … c'est avant tout avoir fait son choix dans la
version du langage Internet qu'on a utilisé. En d'autres termes, vous ne
commencez pas par choisir un DOCTYPE puis une version du markup
(HTMl 4.01, ou XHTML 1.0, …) cela se fait dans l'ordre
inverse : vous commencez par choisir votre langage et puis vous lui
associez le DOCTYPE correspondant.
Si vous avez choisi HTML, alors il va encore falloir choisir parmi trois modes auxiliaires : STRICT, TRANSITIONAL ou FRAMESET.
Le mode auxiliaire STRICT veut dire que vous allez respecter la
norme correspondante à la lettre. TRANSITIONAL
veut dire que vous vous autorisez des constructions et syntaxes qui peuvent
être obsolètes. FRAMESET veut dire que vous allez utiliser des
frame.
Les trois déclarations correctes sont les suivantes :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
Qu'en est-il maintenant pour les déclarations en XHTML ? Il y a un distingo important à apporter entre XHTML 1.0 et XHTML 1.1. En XHTML 1.1 … vous n'avez pas le choix :il faut respecter la norme au pied de la lettre : du XHTML 1.1 est TOUJOURS strict (c'est ce qui est fait sur le présent site).
Si vous souhaitez vous concilier les faveurs des navigateurs, alors il faudra opter pour XHTML 1.0. Chez Lato Sensu Management, nous avons d'emblée choisi la norme XHTML 1.1 malgré les clameurs qui se sont manifestées (nous verrons cela plus loin).
En XHTML 1.0 vous avez une fois encore le choix entre les trois modes auxiliaires que sont STRICT, TRANSITIONAL et FRAMESET.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Afin d'éviter toute confusion, nous vous renvoyons au site du W3C qui propose une liste de DOCTYPEs sur la page suivante : Recommended DTDs to use in your Web document.
Vous trouverez des articles qui banissent aujourd'hui l'utilisation du XHTML pour des raisons qui peuvent échapper à l'exercice d'une compréhension rapide.
En fait, en plus de connaître la version du HTML, il faut que les navigateurs sachent au préalable qu'il s'agit bien de HTML.
C'est là que le bât blesse. Parce pour qu'un navigateur puisse reconnaître
correctement du HTML, il faut le lui dire dans une instruction du style
content-type: text/html
Cette instruction … vous ne la maîtrisez pas ! Et c'est ici que les romains s'empoignèrent si nous pouvons dire.
En effet ... cette instruction est envoyée dans les entêtes du protocole HTTP. En d'autres termes … c'est le serveur Internet de votre hébergeur qui est configuré pour renvoyer cette instruction (vous pouvez découvrir vous-même ces entêtes — on parle de headers — grâce au réputé Rex Swain's HTTP Viewer).
Et bien … si vous essayez par exemple l'utilitaire de Rex sur notre
propre site, vous verrez effectivement que l'instruction de type de contenu
(Content-Type: text/html) fait bel et bien appel à du HTML
alors que, stricto sensu … nous devrions plutôt
renvoyer un contenu de type XHTML comme dans Content-Type:
application/xhtml+xml.
Fin de la fusillade !
Pour sûr, cette manière de procéder n'est pas entièment correct … mais de là parler de danger il y a une marge que nous sentons être de la même teneur que celle investie dans la grande Inquisition balançant l'hérésie à la tête de ceux qui ne leur revenaient pas.
Car quand même … le grand manitou Zeldman lui-même a conçu son site
en XHTML 1.0 Transitional (http://www.zeldman.com) et il nous renvoie sans
se tracasser du Content-Type: text/html; charset=UTF-8; le W3C
(les grands gardiens des normes — http://www.w3.org) joue dans la même
pièce : XHTML 1.0 Strict avec Content-Type: text/html; charset=iso-
8859-1 ... et nous pourrions ainsi continuer une très longue liste
qui nous confortera dans notre choix.
À vrai dire, nous ne négligeons pas les problèmes mentionnés par ceux qui considèrent qu'il est dangereux d'utiliser le XHTML. Nous connaissons ces problèmes ... mais de là parler de danger. Nous refusons de passer le fleuve : nous restons sur notre rive et quand le pont sera construit nous envisagerons sereinement la traversée. Jusque là … vive le XHTML 1.1 … et jugez-en plutôt utilisez vos yeux, exercez vos doigts : ce site s'affiche bel et bien correctement. Donc … pas de dogme !