Nous déclarons doctype en HTML a généralement les types suivants:
<! Doctype html public - // w3c // dtd xhtml 1.0 transitional // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<! Doctype html public - // w3c // dtd xhtml 1.0 strict // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd>
<! Doctype html public - // w3c // dtd html 4.01 // en http://www.w3.org/tr/html4/strict.dtd>
<! Doctype html public - // w3c // dtd html 4.01 transitional // en http://www.w3.org/tr/html4/loose.dtd>
Oui, il y a HTML et XHTML ici, et il y a aussi une transition et stricte. Comme son nom l'indique, XHTML signifie que ce document est écrit au format XML, et HTML signifie que ce document est écrit au format HTML. La transition signifie que ce document répond aux exigences de Transitional.dtd ou lâche.dtd, tandis que strict signifie que ce document répond aux exigences de Strict.dtd. Mais en fait, nous avons souvent les malentendus suivants:
(1) Mon document est déclaré XHTML, alors mon document doit être exactement au format XML.
(2) Mon document est déclaré strict, donc mon document doit être rendu de la manière stricte, sinon, il est rendu de la manière Quirks.
Ces deux compréhensions sont très directes, mais elles ont tort, et nous faisons souvent de telles erreurs.
Premièrement, le document est déclaré XHTML et HTML, et n'a aucune corrélation directe avec l'analyse du document (c'est-à-dire l'analyse du navigateur du document). En fait, la façon dont le document d'analyse du navigateur dépend du format que le serveur fournit le document. D'une manière générale, il existe deux façons: texte / html et application / xhtml xml. Seuls les documents fournis dans la méthode d'application / HTML XML peuvent être analysés en XML. Cependant, pour les raisons historiques du navigateur, tous les navigateurs ne prennent pas en charge les documents de format XML de demande / XHTML. Les versions avant IE7 (y compris IE7) ne peuvent pas prendre en charge ce format. Si IE7 rencontre un document dans ce format, il incitera l'utilisateur à enregistrer en tant qu'autres fichiers. Compte tenu de l'utilisation généralisée de IE, la plupart des documents sont actuellement fournis dans le texte / HTML. Les documents fournis dans le texte / HTML sont analysés selon la sémantique de HTML. Tout le monde sait que le HTML est très tolérant aux pannes. Même si la balise de votre document n'est pas fermée correctement, le HTML peut être affiché correctement. Par conséquent, si votre XHTML est fourni dans le texte / HTML (dans la plupart des cas), même si vous déclarez XHTML dans Doctype, votre document n'est pas analysé au format XML, il ne peut donc pas garantir que votre document est strictement conforme aux spécifications XML. En fait, de nombreux experts suggèrent que si votre document n'est pas fourni sous forme d'application / XHTML XML, vous devriez le déclarer comme HTML.
Deuxièmement, la façon dont le navigateur rend votre document n'est pas déterminée par le DTD que vous déclarez. En fait, si vous déclarez Doctype et DTD, votre document est rendu en mode strict (ou en mode standard, de nombreux navigateurs incluent également le mode presque standard, et il n'y a pas de distinction ici). Pour les documents sans doctype, le mode Quirks est utilisé pour rendre. Par conséquent, le mode de rendu du navigateur n'a aucune relation directe avec le DTD que vous avez déclaré.
Enfin, que vous le déclariez strict.dtd ou transitional.dtd, il ne semble pas y avoir de différence dans les navigateurs actuels. Strict.dtd est beaucoup plus strict que transitional.dtd ou lâche.dtd, et de nombreux éléments ne peuvent pas être utilisés dans strict.dtd. Cependant, en raison de la compatibilité du navigateur, même si vous déclarez strict.dtd dans doctype, le navigateur peut toujours afficher correctement votre document lors de la rencontre d'éléments qui ne sont pas autorisés dans strict.dtd. Je suppose que le navigateur ne prend pas en considération le DTD. Par exemple, la balise d'Iframe n'existe pas dans strict.dtd, mais même si votre doctype déclare strict.dtd et utilise ensuite la balise d'Iframe, le navigateur (y compris IE7, IE8, FF3.0, Safari 3.0) peut afficher correctement votre document. Le navigateur n'analyse pas votre document en fonction du DTD que vous avez déclaré. À l'heure actuelle, il peut s'assurer que votre document est conforme à strict.dtd ou transitional.dtd. Il ne peut être analysé que par certains validateurs en ligne, tels que le validateur W3C. Le navigateur ne peut pas vous fournir un bon soutien. Bien sûr, en fait, si vous pouvez écrire votre document strictement selon le DTD que vous déclarez, il est préférable, afin que votre document ne produise pas d'erreurs lorsque le navigateur respecte strictement le DTD à l'avenir.
donc,
(1) Si votre document est fourni en texte / HTML, vous devez le déclarer comme HTML. Si vous voulez que IE7 s'affiche correctement, vous devriez le faire encore plus.
(2) Si votre document est déclaré XHTML, vous devez le fournir sous forme d'application / HTML XML.
(3) Essayez de déclarer Doctype et DTD devant votre document, afin de vous assurer que vous n'utilisez pas le mode Quirks pour rendre le document.
(4) Si vous déclarez DTD, vous devez rédiger votre document strictement conformément aux exigences de DTD. Surtout si vous déclarez Strict.dtd, vous devez faire attention aux éléments ne sont pas utilisables.
Remarque: Au fil du temps, la prise en charge du navigateur pour HTML et XHTML, strict.dtd et transitional.dtd sera meilleure. Si votre navigateur est beaucoup plus élevé que IE7, IE8, FF 3.0 et Safari 3.0, vous devez prêter attention à l'applicabilité de cet article.