Quels DOCTYPES pour XHTML ?

vendredi 18 décembre 2009
par Loki
popularité : 44%

Qu’est-ce qu’un DOCTYPE

Si vous affichez le code source de cette page, vous constaterez que la toute première "instruction", avant la balise <html> ressemble à ceci :

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

Cette instruction indique au navigateur que le code HTML contenu dans cette page respecte (ou est censé respecter) une norme décrite par une DTD (Dédinition de Type de Document), un fichier qui indique les éléments et les attributs d’un langage de marquage et leurs règles d’utilisation, dans cet exemple le fichier xhtml1-transitional.dtd consultable sur le site du W3C.

Dans une DTD XHTML, on définit par exemple que <p> est une balise autorisée, qu’elle est de type block et qu’on peut l’utiliser par exemple à l’intérieur d’un élément <div>.

Si votre code respecte la DTD indiquée, votre page doit s’afficher correctement sur tout navigateur qui la respecte également. Si vous ne spécifiez pas de DOCTYPE, ou faites référence à une DTD obsolète, l’affichage de vos pages sur les différents navigateurs en sera quelque peu (voire beaucoup) affectée.

Pour vérifier que votre code XHTML est valide (conforme à la DTD spécifiée) vous pouvez utiliser W3C Markup Validation Service, qui vous indiquera éventuellement les corrections à apporter à votre code pour le rendre valide.

Mais pas la peine de vous affoler si le validateur vous indique plusieurs pages d’erreurs, personne ne viendra vous taper sur les doigts, mais avant de commencer à corriger les erreurs dans votre code, vérifier que vous avez choisi la bonne DTD, car il existe des DTD différentes pour le langage XHTML, chacune répondant à des besoins spécifiques.

Les différentes DTD

DTD XHTML 1.0

Il existe 3 DTD pour XHTML 1.0, classées en Strict,Transitional et Frameset, chacune destinée à un usage particulier.

STRICT :

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

C’est la norme XHTML pure et dure, répondant totalement à l’ exigence de séparation du contenu et de la présentation : en plus de respecter scrupuleusement la syntaxe XHTML, votre code ne doit contenir aucun attribut de présentation, du type align="center" ou bgcolor = blue, ou encore des balises comme <b> ou <font>. Toutes les propriétés de présentation doivent impérativement être placées dans une feuille de style (CSS).

C’est également la norme que je vous suggère d’utiliser, cela facilitera grandement votre transition vers le XHTML 1.1 mais également vers le prochain HTML 5....et accessoirement, vous contribuerez à diffuser un standard et à éviter que le web ne se transforme en une tour de Babel.

TRANSITIONAL :

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

C’est le DOCTYPE XHTML le plus répandu aujourd’hui car il permet une transition en douceur de la syntaxe HTML vers la syntaxe XHTML tout en permettant toujours l’utilisation d’éléments de présentation à l’intérieur du code.

FRAMESET :

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

A utiliser pour les sites qui emploient des frames, c’est à dire découpent l’écran en plusieurs cadres pour y afficher le contenu de plusieurs pages HTML, comme dans l’exemple ci-dessous

<html>

<frameset cols="25%,50%,25%">
 <frame src="frame_a.htm" />
 <frame src="frame_b.htm" />
 <frame src="frame_c.htm" />
</frameset>

</html>

Personnellement, je n’en ai jamais eu l’usage, et en terme de référencement, c’est expressément déconseillé. Mais bon, si ça existe, c’est bien que quelques uns en ont besoin.

DTD XHTML 1.1

Alors là, vous n’avez pas l’embarras du choix, il n’y en a qu’une seule.

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

Et les DTD personnalisées ?

Et bien oui, pourquoi s’embêter avec XHTML à la syntaxe si stricte alors qu’on peut arriver au même résultat avec HTML à la syntaxe plus permissive ? La réponse la plus répandue est que le XHTML est une étape pour faire évoluer HTML vers une syntaxe XML. C’est pas faux, mais c’est trompeur, car le langage HTML n’est pas destiné à disparaitre au profit du langage XML, les deux ayant des finalités différentes, mais les applications web de demain utiliseront les deux langages conjointement : le XML pour décrire les données, le HTML (et le CSS) pour les afficher, et avoir des syntaxes les plus proches possibles en facilitera grandement l’usage.

Un des atouts du langage XML est de pouvoir définir de nouvelles balises.

Et cet atout est également présent (mais rarement exploité) dans le XHTML : on peut définir de nouvelles balises, ou de nouveaux attributs à affecter aux balises existantes : il suffit de les déclarer dans une DTD personnalisée, ce qui fera l’objet d’un prochain article, car je sens que j’ai déjà abusé de votre patience ;).


Commentaires