La déclaration XML, à placer avant le doctype, fait basculer certains anciens navigateurs dans le modèle de boite (erroné) de Microsoft (mode Quirks).
<?xml version="1.0"?>
La déclaration XML ne devrait apparaître que sur les document web au format XML ou XHTML traités en tant que XML (c'est à dire avec un content="application/xhtml+xml"
, voir l'astuce sur XHTML 1.1).
Une déclaration XML n'a pas sa place dans un document HTML ou un document XHTML servi avec un content="text/html".
En résumé, la déclaration XML n'est pas obligatoire selon les usages que l'on fait du XHTML :
- Si on utilise XHTML pour faire du HTML (dans la plupart des cas), la déclaration n'est pas nécessaire.
- Par contre, si XHTML est utilisé comme du XML ou du MathML, la déclaration est obligatoire.
- De même, il est obligatoire si l'encodage du document est autre que UTF-8 ou UTF-16 (dans le cas de pages servies en XML ou XHTML/XML)
En évitant d'ajouter la déclaration sur les pages HTML ou XHTML servies comme HTML, que ce soit en strict
, en transitional
ou en frameset
:
- on respecte les règles de compatibilité XHTML - HTML
- on évacue le problème du doctype switching dans Internet Explorer et de l'affichage brut de la déclaration dans d'autres navigateurs plus anciens
Attention : la déclaration XML peut parfois poser quelques problèmes avec PHP car sa syntaxe est comprise comme étant une introduction à du code PHP.
Pour cela, il faut réécrire la déclaration de cette manière :
<?php echo '<?xml version="1.0" ?'.'>'; ?>
À lire en complément : Choix d'une DTD: le doctype switching n'est pas pour nous.