Quels sont les différents doctypes en html et que signifient-ils?

comme le titre le décrit, quels sont les différents types de documents disponibles et que signifient-ils? Je remarque que la disposition semble un peu différente dans IE7 quand je passe de

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

à

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

y at-il d'autres et quels sont les effets ou conséquences?

Merci!

35
demandé sur Chris Conway 2008-11-01 06:16:54

6 réponses

Un Doctype , ou Déclaration de Type de Document associe le document avec un Document Type Definition .

la définition de type de Document est une norme pour un document XML. Il existe de nombreux DTDs, pour les documents XML et XHTML. XML lui-même n'a pas beaucoup d'un schéma ou d'un ensemble de règles très spécifiques, mis à part l'exigence que tout soit bien formé. Vous pouvez penser à une DTD comme un schéma plus spécifique pour le document .

Modes De Rendu

en raison du mouvement des standards, la plupart des navigateurs modernes ont en fait différents modes de rendu ( mode standards , pour rendre votre document et css selon des normes web plus récentes, et mode quirks , où le navigateur ramène quelques idées de rendu dès les premiers jours du web). Ces modes sont institués à des fins de rétrocompatibilité. Le vaste paysage des pages web qui ont été créées dans la première ère du web sont rendus selon les règles de leur temps, tandis que les documents plus récents peuvent faire appel à la nouvelle vague de normes. À mesure que le temps passe et que de nouveaux formats sont imaginés, une DTD correspondante pourrait être créée.

Anomalies Du Navigateur

In un monde idéal, une page qui est chargée par un navigateur lirait le Doctype en haut et l'utiliserait pour rechercher une définition de type de Document. Il utiliserait alors le schéma de cette DTD comme base de lecture du reste du document. Doctypes, alors, serait indispensable pour la validation de balisage de documents. La DTD indiquera la norme en fonction de laquelle votre document doit être validé.

Malheureusement, ce n'est pas un monde idéal. Les navigateurs ne se comportent pas nécessairement ici, et si c'est le cas, le comportement n'est pas tout à fait conforme à la vision originale des Doctypes. Bien que L'analyse soit faite indépendamment du Doctype, les navigateurs principaux examineront au moins le Doctype pour déterminer le mode de rendu. Si votre Doctype est absent ou incomplet, le navigateur affichera probablement en mode quirks . Pour que les documents modernes et bien écrits apparaissent correctement, le navigateur doit être rendu en mode . . Mozilla, Safari, et certaines versions récentes D'Opera implémentent en fait un mode presque standard , qui est entièrement dédié aux pages de transition.

lorsque vous changez le Doctype et notez des changements dans la façon dont une page est affichée, c'est parce que le navigateur peut appliquer un ensemble légèrement différent de règles quand il essaie de parser le document. En conséquence, la page résultante peut être un peu différent, selon que toutes ses parties sont conformes à la DTD, ou du moins, selon le navigateur, que vos données soient validées dans le mode de rendu suggéré par doctype.

choisir un Doctype

dans la poursuite de la conformité aux normes, des types de documents stricts doivent être utilisés dans la mesure du possible.

en écrivant dans XHTML , ce Doctype est commun:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

en écrivant dans HTML 4.1 , celui-ci est commun à la place:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

D'autres doctypes courants pour XHTML et HTML 4 sont listés ici, pour être complets:

<!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 XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.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 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Débat sur le Strict rapport de Transition Doctypes

normes évangélistes ont demandé aux développeurs web de cesser d'utiliser le Doctype de transition sur les nouvelles pages et à la place utiliser Strict. Encore une fois, il s'agit d'un cas où la théorie et la pratique ont des difficultés à se réconcilier. L'espoir initial de la transition Doctype était de fournir une maison de transition pour la transition des anciens sites web vers les normes-conformité. Avec les doctypes de transition, la restriction sur les éléments et les attributs est littéralement "moins stricte", de sorte que les développeurs seraient en mesure de faire fonctionner leur travail en mode standard plus tôt, et d'éliminer progressivement les différences en suspens au fil du temps.

controverse existe parce qu'il n'est pas toujours aussi simple pour un développeur de changer le Doctype dans un environnement d'entreprise. Les développeurs Freelance et les fabricants de sites Web de petite ou moyenne taille ont souvent plus de facilité à déterminer leur type de document et à faire cette transition. Dans un environnement de production d'entreprise pour un service basé sur le web très demandé, il existe des dépendances intrinsèquement plus compliquées sur les systèmes existants et les produits de code de tiers, qui peuvent être eux-mêmes sur un feuille de route pour la suppression ou la refonte, mais l'exécution de tels changements doit être faite méthodiquement et progressivement.

Outils Utiles

le W3C ( World Wide Web Consortium ) est un groupe qui joue un rôle actif dans la définition de ces types de normes. Ils maintiennent un outil en ligne utile à http://validator.w3.org/ for vérifier et valider les documents en fonction de leurs normes. Il existe de nombreux autres outils tiers et extensions de navigateur avec des fonctionnalités similaires.

53
répondu keparo 2012-11-07 00:11:40

Navigateurs don't care quel doctype vous utilisez (enfin, presque vrai), ils l'utilisent pour une chose et une seule chose: décider qui mode de rendu à utiliser. Voir par exemple la Fx ou Opera documentation pour des exemples du monde réel sur quels algorithmes est utilisé pour décider quel mode Utiliser (je suppose qu'il existe une certaine documentation pour IE enfoui quelque part dans MSDN aussi ... [Cela peut être la bonne page]( http://msdn.microsoft.com/en-us/library/ms535242(SV.85).aspx) , je ne sais pas, désolé).

il y a cependant deux modes principaux dans la plupart des navigateurs (certains navigateurs ont un mode presque standard trop):

  • quirks mode (utilisé lorsqu'aucun doctype "correct" n'est trouvé, "correct" du point de vue des navigateurs): essayez de rendre le document comme une ancienne version D'IE le ferait (une des différences les plus importantes, c'est-à-dire qui affecte le rendu le plus, est que certains navigateurs exploitent le bug IE box model bug dans ce mode),
  • et mode standard (utilisé lorsque le navigateur a trouvé un doctype qu'il considère correct): essayer de faire ce que les normes disent.

vous pouvez utiliser (le non standard) document.compatMode propriété dans les navigateurs mentionnés ci-dessus à vérifier le mode qui a été utilisé pour rendre le document actuel.

(Note sur XHTML: j'ai supposé que vous serviez des documents en HTML ( text/html ), si vous serviez des documents en XHTML (probablement application/xhtml+xml ) la plupart des navigateurs sautent directement en mode standard et ne se soucient pas du tout du doctype AFAIK.)

BTW: la recommandation (ou, ce qui ressemble à une recommandation) dans l'autre réponse est cassée, le transitoire DTD devrait ne pas utiliser sur de nouveaux documents. Toujours utiliser strict (le terme "strict" est un peu trompeur, devrait être "par défaut" ou quelque chose d'autre non-effrayant), période:

les auteurs doivent utiliser la DTD stricte dans la mesure du possible, mais peuvent utiliser la DTD transitoire lorsque l'attribut et les éléments de présentation doivent être pris en charge. -- HTML 4.01: 22 définition de type de Document transitoire .

nous recommandons que les auteurs écrivent des documents qui sont conformes à la DTD stricte plutôt qu'aux autres DTD définies par cette spécification. -- HTML 4.01: 4 conformité: exigences et recommandations

et il y a beaucoup d'articles de blog à ce sujet, par exemple plus de DOCTYPEs de transition, s'il vous plaît (à partir de 2006, mais certains , évidemment, ont encore des problèmes avec cela :).

les navigateurs ne se soucient pas de ce que vous choisissez, puis développé dans un rant sur la façon de choisir la DTD correcte, intéressant ... Mais si vous allez dépenser (/waste?) temps et énergie pour choisir une DTD, vous pouvez aussi bien choisir la bonne (D'un point de vue HTML 4.01 standard).

Ou , vous pouvez ignorer tout cela et utiliser la suite au lieu de cela, bientôt de toute façon :

<!doctype html>

( Cette réponse à "aucune raison de ne pas commencer à utiliser le HTML 5 doctype?"était lié à la dernière partie.)

7
répondu cic 2017-05-23 12:17:05

Voici l'explication officielle des différentes DTD du W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list.html

vous pourriez également trouver le suivant bénéfique:

http://www.freedivs.com/tutorials/Choosing%20a%20DOCTYPE /

3
répondu Noah Goodrich 2008-11-01 03:23:06

il y a beaucoup de fausses informations autour des doctypes. La confusion découle du fait que les doctypes étaient à l'origine destinés à une seule fin (identifier la DTD, c.-à-d.: la version HTML utilisée), mais dans le monde réel les navigateurs sont utilisés à des fins complètement différentes.

les déclarations de type Doc ne sont utilisées que pour une chose dans les navigateurs d'aujourd'hui, c'est-à-dire passer entre quirks mode de rendu et normes mode de rendu pour CSS. Donc en gros, c'est une chose CSS, pas une chose HTML.

le rendu en mode Quirks est rétro-compatible avec certains vieux bogues de rendu dans les navigateurs plus anciens, et est surtout utile pour les contenus hérités que vous ne voulez pas corriger. Le nouveau contenu doit toujours utiliser le mode standard, car il rend plus correct et plus uniforme d'un navigateur à l'autre. (Il y a encore des différences de rendu entre les navigateurs en utilisant le mode standard, mais il y a bien pire dans les bizarreries mode.)

Il ne pas faire toute la différence si vous choisissez un format HTML ou XHTML docytype, cela ne fait aucune différence si vous choisissez stricte ou de transition doctype. Le mode de rendu est essentiellement sélectionné comme ceci:

  • si le document n'a pas de doctype, le mode quirks est sélectionné.
  • si le document a un non reconnu doctype, le mode "standards est sélectionné. Cela signifie que vous pouvez écrire un doctype aléatoire comme <!DOCTYPE Chris> et il fonctionnera parfaitement.
  • doctypes officiels du W3C sans l'url correcte (la seconde chaîne dans la balise) sélectionne quirks mode. Tous les autres doctypes sélectionnent le mode standard. (Edit: bien sûr, il est plus complexe que cela, et elle varie même entre les navigateurs de l'reconnu doctypes ça déclenche le mode bizarreries. Se hsivonens overview , lié à partir d'une autre réponse.)

historiquement, les doctypes étaient destinés à déclarer quelle version et sous-ensemble de HTML étaient utilisés. HTML4 définit plusieurs versions ,où "transitional" permet un certain nombre d'éléments et d'attributs qui (comme la police) n'est pas autorisé dans "strict". Un navigateur pourrait théoriquement traiter des documents " stricts "différents des documents"transitoires". Toutefois Non le navigateur fait en fait ceci .

Edit: scunliffe souligne que IE8 aura encore un autre mode de rendu, le mode "IE8 standards". Cependant, ce mode N'est pas déclenché par un doctype mais par une méta-balise.

2
répondu JacquesB 2008-11-03 12:45:36

en gros, le doctype détermine à quel point IE va être fou.

si vous ne le mettez pas sur XHTML, ou" strict " vous vivrez dans un monde de souffrance quand il s'agit D'IE (même si vous le mettez, vous serez toujours haine sur IE, mais il fait beaucoup mieux).

0
répondu dicroce 2008-11-01 22:11:25