Déclarations XHTML

Par Patrick Griffiths

Les types de déclaration

Tout en haut de vos pages web, vous devez mettre une déclaration de document. Oui, oui, j'ai bien écrit : « vous devez ».

Sans déclaration de type de document (« Doctype » ou « Doctype Declaration » en anglais, NdT), votre document HTML n'est tout simplement pas valide et la plupart des navigateurs qui vont visualiser votre document vont passer en mode « quirk », c'est-à-dire qu'ils vont considérer que vous faites absolument n'importe quoi, et en retour vont n'en faire qu'à leur tête. Vous aurez beau être le plus grand champion du HTML que la Terre ait jamais porté, votre HTML aura beau être impeccable et votre CSS parfaite, s'il n'y a pas une déclaration de document, ou si ce n'est pas la bonne, vos pages web pourraient bien finir par ressembler à des pages construites par un bébé gibbon myope et borgne atteint de troubles de l'apprentissage.

La déclaration de document pour le XHTML 1.0 Strict ressemble à ceci :

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

La déclaration suivante est celle du XHTML 1.1, laquelle peut sembler préférable puisqu'elle est issue de la dernière version du XHTML, mais elle présente quelques problèmes qui seront expliqués dans une minute.

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

Si vous ne pouvez pas vous passer de HTML 4 ou si vous êtes un fanatique de Netscape 4, vous pouvez utiliser le XHTML 1.0 Transitional :

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

La seule raison valable d'utiliser cette déclaration, même si c'est peu probable, est de devoir être compatible avec des navigateurs plus anciens et peu utilisés. Le Transitional XHTML 1.0 accepte les anciens éléments de présentation de HTML 4 qui peuvent permettre une meilleure présentation dans des navigateurs tels que Netscape 4, mais l'emploi de tels éléments peut nuire à l'efficacité, voire à l'accessibilité de vos pages Web.

Enfin, si vous êtes un de ces farfelus qui utilisent les cadres, la déclaration de type de document XHTML 1.0 Frameset ressemble à ceci :

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

Notez que la balise DOCTYPE est un peu rebelle. Elle demande à être écrite en majuscules et ornée d'un point d'exclamation. Elle défie également la règle en étant la seule balise qui n'a pas à être refermée.

La déclaration de la langue

Il est préférable d'identifier la langue principale du document soit dans un en-tête HTTP, soit à l'aide de l'attribut xml:lang au sein de la balise HTML d'ouverture. Bien que cette déclaration ne soit pas indispensable à la validation d'un document XHTML, elle améliore son accessibilité. La valeur est une abréviation telle que 'en' (Anglais), 'fr' (Français), 'de' (Allemand), ou 'mg' (Malgache).

La déclaration pour un document dont le contenu est principalement en français pourrait être par exemple :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

Une fois la langue principale déclarée, si vous utilisez d'autres langues dans votre document, il est conseillé d'utiliser également l'attribut xml:lang en ligne (par exemple :<span xml:lang="de">HTML Hund</span>).

Les types de contenu

Le type de média et le jeu de caractères d'un document HTML doivent également être indiqués. On peut le faire par un en-tête HTTP comme celui-ci :

Content-Type: text/html; charset=UTF-8 

La première partie (dans cet exemple : text/html) est le type MIME du fichier. Cela permet au navigateur de savoir de quel type de média il s'agit et donc de savoir quoi en faire. Tous les fichiers ont un type MIME. Pour une image JPEG, le type MIME est : image/jpeg, pour un fichier CSS c'est text/css, et le type le plus utilisé pour un document HTML est text/html.

La deuxième partie de l'en-tête HTTP (dans l'exemple : UTF-8) est le jeu de caractères. La façon la plus simple de déclarer un en-tête HTML (ou de l'imiter) est sans doute d'utiliser une méta-balise « équivalent-HTTP » dans le code HTML. Le code ressemble alors à ceci :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Il est un peu plus compliqué, mais préférable (parce que c'est un en-tête HTTP correct, et parce que ça réduit la taille du code), d'envoyer l'en-tête en utilisant un langage de script côté serveur. Avec le PHP cela donne quelque chose comme ceci :

<? header("Content-Type: text/html; charset= UTF-8"); ?> 

Si vous ne voulez pas (ou ne pouvez pas) utiliser un langage de script côté serveur, peut-être pourriez-vous aller directement au serveur avec un fichier « .htaccess ». La plupart des serveurs (compatibles Apache) peuvent avoir un petit fichier texte, avec le nom de fichier « .htaccess », installé dans le dossier racine et qui, avec la ligne suivante, associe tous les fichiers avec l'extension « .html » au type MIME et au jeu de caractères voulus :

AddType text/html;charset=UTF-8 html 

Les jeux de caractères peuvent être l'« ISO-8859-1 » pour la plupart des langues occidentales basées sur le Latin, le « SHIFT_JIS » pour les Japonais ou l'« UTF-8 », une version de l'« Unicode Transformation Format » (UTF ou Format de Transformation Unicode, NdT), qui fournit une large palette de caractères uniques employés dans la plupart des langues. En fait, vous devez utiliser le jeu de caractères qui correspond le mieux à votre public. À moins que vous n'utilisiez une langue basée sur le latin (Anglais inclus) où l'ISO-8859-1 peut être utilisé car largement reconnu, utilisez l'UTF-8 : celui-ci peut afficher la plupart des caractères des langues les plus courantes, tout en étant le plus sûr car il pourra fonctionner sur la plupart des ordinateurs. Vous pouvez en lire plus à propos des jeux de caractère ailleurs sur le web.

Note

Le XHTML devrait toujours avoir application/xhtml+xml pour type MIME. Car il s'agit bien d'une application XML. Malheureusement, la plupart des navigateurs n'ont pas la moindre idée de ce que c'est. Donc, on tolère généralement sans trop de problèmes le type MIME text/html. D'après le W3C, dont l'idée est reprise et renforcée par le Web Standards Project, les variations du XHTML 1.0 peuvent être utilisées avec le text/html mais pas le XHTML 1.1. C'est pourquoi les exemples tout au long de ce site (le site de l'auteur, NdT) sont en XHTML 1.0 Strict doté d'un type MIME text/html. Mais vous pouvez (et vous devriez sans doute) attribuer le type MIME correct aux navigateurs qui peuvent l'accepter, quitte à bidouiller un peu côté serveur.

Mon site utilise PHP pour proposer soit du XHTML 1.1 avec un type MIME application/xhtml+xml aux navigateurs qui le comprennent et agissent en conséquence (comme Mozilla), soit un XHTML 1.0 Strict avec un type MIME text/html aux autres navigateurs (tels que IE). Le script, placé au tout début de chaque page, ressemble un peu à ceci :

<?
if(stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")){
header("Content-Type: application/xhtml+xml; charset=UTF-8");
echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">');
} else {
header("Content-Type: text/html; charset=UTF-8");
echo ('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
}
?>

Ce code vérifie si le navigateur accepte le type MIME application/xhtml+xml, et le cas échéant envoie le type MIME avec le type de document XHTML1.1 inscrit dans le HTML. Si le type MIME n'est pas reconnu, alors c'est le type MIME text/html qui est envoyé, et le doctype XHTML 1.0 Strict est écrit dans le HTML.

Mis à part la quiétude d'esprit d'avoir fait ce qu'il fallait et de s'être préparé aux évolutions futures, vous pouvez tirer d'ores et déjà un bénéfice de cette méthode : Mozilla va traiter vos fichiers comme des applications XML, et ne fonctionnera pas du tout si votre XHTML n'est pas au niveau, c'est-à-dire s'il n'est pas bien formé. Vous pourrez alors déboguer sans avoir nécessairement recours à un validateur.

Fiche technique

À propos de l'auteur

Patrick Griffiths est un artisan du web basé à Londres qui possède un penchant pour la musique soul, l’évolution, et les promenades de son site de compagnie, HTML Dog. Selon son humeur, il peut préférer le surnom PTG.

Articles du même auteur

Articles similaires

Voici la liste des dix articles les plus récents en rapport avec cet article :

Tous niveaux

Web design

© 2001-2016 Pompage Magazine et les auteurs originaux - Hébergé chez Nursit.com ! - RSS / ATOM - About this site