Le prologue XML, à placer avant le doctype, fait basculer certains navigateurs dans le modèle de boite (erroné) de Microsoft (mode Quirks).
Petit rappel sur le mode Quirks :
[URL]http://blog.alsacreations.com/2006/10/23/296-a-propos-du-modele-de-boite-microsoft-ou-quirks[/URL]
Le prologue 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 FAQ sur XHTML 1.1)
* Un prologue XML n'a pas sa place dans un document HTML ou un document XHTML servi avec un content="text/html". *
En résumé, le prologue XML n'est pas obligatoire selon les usages que l'on fait du XHTML :
- Si on utilise XHTML pour faire du HTML (comme 90% des gens), le prologue n'est pas nécessaire.
- Par contre, si XHTML est utilisé comme du XML ou du MathML, le prologue 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 le prologue 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 IE et de l'affichage brut du prologue dans d'autres navigateurs plus anciens
NOTE : le prologue XML pose également des conflits avec PHP car sa syntaxe est comprise comme étant du langage PHP.
Pour cela, il faut réécrire le prologue de cette manière :