HTML est le langage universel de publication d'hypertextes sur le World Wide Web [1]. Depuis 1982, lorsque Tim Berners-Lee a simplifié SGML pour établir la définition originale du HTML jusqu'à la publication de la spécification XHTML1.1 en 2001, HTML est devenu un standard international avec plusieurs versions [2]. Chaque version de la spécification est définie dans un langage lisible par machine, qui décrit la structure juridique, les éléments et les attributs. Il s'agit de la définition du type de document (DTD).
DTD décrit la déclaration de type de document (déclaration DTD, appelée doctype[3]) située au début du document HTML. C'est le lien entre le document et l'instruction DTD. Par exemple, le doctype de HTML4.01 Strict est :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd ">
Il indique la version HTML utilisée par le document, qui constitue l'information la plus importante dont les outils tels que les navigateurs ont besoin lors de l'analyse du document. Par exemple, les outils de validation du W3C peuvent l'utiliser pour vérifier la syntaxe et signaler les erreurs.
La mise en œuvre incorrecte des normes dans les premiers navigateurs, la prolifération des extensions privées et la confusion des premières normes elles-mêmes en matière de compatibilité ascendante ont abouti à ce que les documents de l'époque n'aient ni doctypes ni références directes aux DTD, ce qui a également rendu difficile la mise en œuvre de nouvelles normes. . a gagné en popularité parce que les navigateurs ne pouvaient pas les distinguer. Afin de traiter les pages Web créées selon les standards du Web et les pages Web créées selon les anciennes pratiques, Todd Fahrner a proposé en 1998 la méthode « inventé avec une bascule » [4], qui permet au navigateur de fournir deux ensembles de modes de rendu. : c'est-à-dire qu'avec un doctype complet, les documents sont analysés selon les normes du W3C, sinon ils sont analysés à l'ancienne.
Cette méthode est pratique, simple et efficace. Deux ans plus tard, il a été utilisé pour la première fois sur la version Mac d'IE, et d'autres fabricants de navigateurs l'ont rapidement adopté. Cela a donné naissance au doctype sniffing (doctype sniffing ou doctypeswitching). Le navigateur l'utilise pour décider si son moteur doit adopter le mode standard, le mode quasi-standard ou le mode bizarreries, ce qui aura un grand impact sur l'analyse HTML et CSS, la mise en page CSS et les scripts JavaScript [5]. Il ne fait aucun doute que nous devrions utiliser autant que possible le modèle standard.
Bien que HTML5 soit encore à l'état de projet, les derniers navigateurs Firefox3.5, Chrome2, Safari4 et IE8 ont commencé à prendre en charge certaines fonctionnalités. En particulier, la sortie de Google Wave a déclenché une nouvelle vague de promotion de la pratique HTML5. HTML5 n'est pas basé sur SGML et n'a pas de DTD, mais pour des raisons de compatibilité ascendante, il accepte le fait de renifler le doctype et définit que le doctype est la seule instruction de conversion de mode en texte/html et n'a aucune autre utilité. Son doctype est tellement concis : <!doctype html>[6].
Il convient de mentionner que IE8 adopte l'instruction X-UA-Compatible [7] pour résoudre la compatibilité ascendante. Par conséquent, le mode de rendu du navigateur dans IE8 dépend non seulement du reniflage de doctype mais également de l'instruction X-UA-Compatible. Non seulement cela rend le jugement de modèle plus complexe [8], mais cela viole également l'idée d'amélioration progressive dans la conception Web [9].
Sur la voie des standards du Web, nous avons non seulement besoin d'une compatibilité ascendante pleine de réalisme, mais aussi d'une compatibilité ascendante pleine d'idéalisme. C'est l'espoir de garantir que notre Web puisse fonctionner correctement à l'avenir. Sous l'angle des normes, de la simplicité et de l'amélioration progressive, la meilleure solution pour notre page pourrait être :
<!doctype html> … <meta http-equiv="X-UA-Compatible" content="IE=Edge"> …
Note:
[1] HTML est la lingua franca pour la publication d'hypertextes sur le monde
Large Web
[2] http://zh.wikipedia.org/wiki/Html
[3] La déclaration DTD était souvent appelée Déclaration de type de document dans les spécifications précédentes.
Il est facile de le confondre avec DTD.
[4] http://web.archive.org/web/20030212115103/http://www.geocrawler.
com/archives/list-name.mbox/123/1998/7/0/1037920/
[5]Activer le mode navigateur avec doctype
[6] http://www.w3.org/TR/html5/syntax.html#the-doctype
[7] Au-delà des types de documents, la normalisation du Web est compatible avec IE8
[8] http://dancewithnet.com/2009/06/14/activating-browser-modes
-avec-doctype/#ie8modes
[9] L’avenir des standards du Web dépend-il de la technologie des navigateurs ?
Texte original : http://ued.koubei.com/?p=928