DTD et <?xml version="1.0" encoding="UTF-8"?>

WRInaute passionné
Bonjour,

J'utilise actuellement la DTD suivante :
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!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">

Quelle est l'utilité de cette ligne en en-tête de page.
Code:
<?xml version="1.0" encoding="UTF-8"?>

J'ai remarqué que cela modifiait l'interprétation de IE 6 (notamment les margin).

Merci,
Dorian
 
WRInaute discret
Salut,

Le prologue XML permet de préciser qu'il s'agit d'un document XML et d'identifier le jeu de caractères utilisé.

Il est obligatoire pour les pages XML ou XHTML servies en "application/xhtml+xml".

Il est facultatif pour les pages XHTML 1.0 servies en "text/html" si le jeu de caractères est bien déclaré :

à l'aide de l'entête HTTP

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

et à l'aide de la balise META

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

Il fait fait basculer IE6 en "quirks mode"... voir A propos du Modèle de boîte Microsoft (ou "quirks")
 
WRInaute accro
Rappels:

1. Un vrai fichier XHTML, c'est servi avec un content-type application/xhtml+xml

2. La plupart des browsers (la dernière fois que j'ai regardé, tous sauf FF, ça a peut-être changé depuis, mais ça inclut à coup sûr IE6) ne reconnaissent pas le content-type application/xhtml+xml

3. Donc les fichiers XHTML sont envoyés dans la plupart des cas avec un content-type text/html

4. Tous les browsers qui reçoivent un fichier avec un content-type text/html interprètent le fichier comme du HTML, et pas comme du XHTML. S'ils reçoivent du XHTML, ils trouvent que c'est du HTML bizarrement formaté. En particulier un prologue <?xml...> c'est du bruit.

5. 99% des fichiers soi-disant en XHTML ne sont pas en XML valide, et s'ils étaient servis avec le bon content-type et interprétés comme du XHTML par le browser, ne seraient même pas affichés.

6. IE se base sur le doctype pour décider s'il est en "quirks mode" (i.e. à la sauce IE pas standard) ou en mode standard. Pour ça, le doctype doit être au tout début. Si tu mets un prologue, il ne "voit" pas le doctype, et donc il passe en quirks mode.

Conclusion:
- arrêtez de faire du XHTML bidon, faites plutôt du HTML 4.01 valide.
- ne mettez pas de prologue XML
- mettez un doctype HTML décent.

Jacques.
 
WRInaute accro
jcaron a dit:
1. Un vrai fichier XHTML, c'est servi avec un content-type application/xhtml+xml
Oui et non
C'est conseillé en version 1.0, mais aucunement obligatoire, à la différence du 1.1
Mais il est vrai que pour faire du html, mieux vaut utiliser le HTML 4.01 que le XHTML 1.0.
 
WRInaute passionné
jcaron a dit:
Conclusion:
- arrêtez de faire du XHTML bidon, faites plutôt du HTML 4.01 valide.
...
- mettez un doctype HTML décent.
Alors là, je dis bravo! Enfin quelqu'un de réaliste (mais je n'en doutais pas de la part de l'auteur. :wink: ).

A noter qu'avec HTML5, XHTML 2 est enterré... et HTML5 ne demande aucune précision du doctype. On écrit le plus simplement du monde :
Code:
<!DOCTYPE HTML>
Et si tu veux utiliser un peu de XML (les CDATA par exemple), il suffit de le déclarer dans la balise html :
Code:
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
 
Discussions similaires
Haut