[ Toutes les pages - html ]

Type MIME et DTD sur le web Préférences

Pargager sur facebook

Afficher le menu

Le type MIME

Le type MIME (Multipurpose Internet Mail Extensions) est un standard qui a été proposé en 1991 pour permettre d'insérer des documents (images, sons, texte, ...) dans un e-mail.

Depuis, le type MIME est utilisé d'une part pour typer les documents attachés à un e-mail mais aussi pour typer les documents transférés par le protocole HTTP. Ainsi lors d'une transaction entre un serveur web et un navigateur Internet, le serveur web envoie en premier lieu le type MIME du fichier envoyé au navigateur, afin que ce dernier puisse savoir de quelle manière il doit afficher le document.

Une image GIF par exemple, a le type MIME image/gif. Les pages Internet peuvent être envoyées par exemple en tant que text/plain pour les pages sans mise en forme, en tant que application/rtf pour le texte enrichi, et ce qui nous intéresse ici, en tant que text/html ou en tant que application/xhtml+xml.

Le type MIME est envoyé au niveau des en-têtes HTTP. En PHP on écrira:

header("Content-Type: ".$mime."; charset=".$charset);

$mime est soit text/html, soit application/xhtml+xml pour ce qui nous intéresse ici.
$charset est iso-8859-1, ou UTF-8, ou ...
Si le Content-Type dépend des capacités du client, il faut en informer les caches intermédiaires (proxy) en ajoutant la ligne suivante:

header("Vary: Accept" );

Le type MIME peut aussi être indiqué à l'aide d'une balise meta, comme par exemple:

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

ce qui permet d'avoir le type MIME correct si la page est lue comme fichier sauvegardé sur le disque dur.

On peut aussi donner l'extension .xhtml aux fichiers devant être traités en tant que type MIME application/xhtml+xml.

Le DTD

Le DTD (Document Type Declaration) indique le type de document envoyé au navigateur, il est envoyé au tout début du document à l'aide de la balise DOCTYPE

Le DTD utilisé depuis le début par le protocole HTTP (HyperText Transfert Protocol), est le HTML (HyperText Markup Language). La dernière recommandation, le HTML 4.01, date du 24 décembre 1999.

Le XML (eXtensible Markup Language) a été décrit dans la recommandation originale en date du 10 Février 1998.

Le XHTML (eXtensible HyperText Markup Language) est un autre DTD utilisé sur l'Internet. La première recommandation XHTML date du 26 Janvier 2000.

Les DTD actuellement utilisés sont les suivants:

XHTML 1.0 Strict

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>

XHTML 1.0 Transitional

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>

HTML 4.01 Strict

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

HTML 4.01 Transitional

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

Prologue XML et Internet Explorer

Internet Explorer a besoin de trouver le DOCTYPE en première ligne, sous peine de passer en mode "quirck" comme si la page n'avait pas de DOCTYPE ayant de grandes répercussions sur le CSS.

Il convient donc de ne pas utiliser la ligne facultative de prologue XML<?xml version="1.0" encoding="utf-8"?>" et d'encoder le charset dans les en-têtes http et/ou dans une balise meta.

Comment servir les pages Internet?

Les options principales pour servir des pages Internet sont les suivantes:

DTD HTML 4.01 strict ou Transitional avec un type MIME text/html

Le HTML est le codage de document qui a le plus de succès au monde, probablement grâce à son incomparable flexibilité. Les documents HTML sont toujours acceptés par les navigateurs, que le code soit correct ou pas, même si cette correction d'erreur ne se fait pas de la même façon sur tous les navigateurs.

Un DTD XHTML 1.0 Strict ou Transitional avec un type MIME text/html

Utiliser du XHTML servi comme text/html satisfait aux spécifications et donne des résultats parfaits, même si certains argumentent qu'il y a une "soupe" de balises. Il est juste prudent de mettre un espace devant les slashes de fermeture de balise />.

Toutes les pages codées en XHTML et servies en tant que text/html apparaissent parfaitement dans tous les navigateurs.

Ces pages sont codées clairement et faciles à maintenir.

Le W3C utilise le XHTML Strict servi en tant que text/html, msn.com fait de même.

ou Transitional avec un type MIME application/xhtml+xml_

Bien que créé depuis longtemps (en mai 2000), le XHTML servi en tant que application/xhtml+xml reste marginal, loin d'un vrai standard de la réalité de l'Internet et semble maintenant être une technologie mort-née.

Il y a plusieurs raison à cela:

Utiliser le type MIME application/xhtml+xml n'apporte rien au rendu du document, à moins que d'y inclure par exemple du MathML, du SMIL, ou du SVG, ce qui ne peut pas se faire en HTML.

Ce type MIME n'est pas reconnu par plusieurs navigateurs, dont IE (Internet Explorer) qui ne les ouvre donc pas et qui propose simplement de les enregistrer sur le disque dur. De plus, les grands moteurs de recherche les ignorent.

Les erreurs ne sont pas tolérées en XML et le chargement de la page est arrêté à la première erreur. Le code doit donc toujours être parfait, tout le temps. Les pages que vous ajoutez ou modifiez doivent à chaque fois être testées immédiatement. Un simple & non échappé, provenant peut-être d'un flux RSS, suffit à rendre la page inutilisable.

Conclusions

Si vous n'utilisez pas le XML avec un langage comme SVG ou MathML, vous n'avez pas besoin du type MIME application/xhtml+xml.

Les DTD XHTML et HTML traitent tous deux correctement le CSS. Le HTML peut être écrit de manière identique au XHTML, à l'exception du slash / pour auto-fermer certaines balises.

La réalité du web est que le HTML est le langage utilisé, car les navigateurs et les moteurs de recherche sont conçus pour le traiter. Le HTML 4.01 continuera d'être supporté par tous les navigateurs, comme le sont le HTML 2 et le HTML 3.2 et ce, aussi longtemps que le WEB sera basé sur le HTTP. Les nouveaux navigateurs ne cesseront donc pas de supporter le HTML 4.01.

Un DTD XHTML 1.0 Strict ou Transitional avec un type MIME text/html fonctionne tout aussi bien que le HTML 4.01. Il n'y a donc aucune raison de se sentir obligé d'utiliser le HTML 4.01 pour profiter de la flexibilité du text/html.

Passer d'un DTD XHTML à un DTD HTML est simple et peut se faire à l'aide de quelques expressions régulières. Il suffit de remplacer les 2 ou 3 premières lignes et de remplacer globalement les /> par >. La transformation inverse n'est pas aussi simple.

Ces arguments plaident en faveur du DTD XHTML avec type mime text/html.

On peut tirer parti du type MIME application/xhtml+xml pour déboguer sans avoir recours à un validateur, les pages ne fonctionnant pas du tout si le code n'est pas bien formé.

Ce site utilise, selon le moment:

Pour terminer, je dirai qu'il ne faut pas, par snobisme ou au nom du principe de "pureté" du code ou encore pour assurer une hypothétique future compatibilité, violer le principe KISS (Keep It Simple Stupid).

Valid XHTML 1.0Strict Valid CSS

AccueilPage précédenteHaut de pagePage suivante