33 votes

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

Comme le titre l'explique, ce sont les différents doctypes disponible et que signifient-ils? Je remarque que la mise en page est un peu différent dans IE7 lorsque je change de

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

pour

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

Existe-il des autres et quels sont les effets ou conséquences?

Merci!

51voto

keparo Points 13747

Un Doctype, ou de la Déclaration de Type de Document associe le document avec une Définition de Type de Document.

La Définition de Type de Document est une norme pour un document XML. Il y a beaucoup de Dtd, pour de XML et des documents XHTML. XML lui-même n'a pas beaucoup d'un schéma ou d'un ensemble de règles très précises, à l'exception de l'exigence que tout soit bien formé. Vous pouvez penser à une DTD aussi, de manière plus spécifique, le schéma du document.

Les Modes De Rendu

En raison des normes de mouvement, la plupart des navigateurs modernes ont effectivement des différents modes de rendu (mode standard, pour le rendu de votre document et css selon les plus récentes normes du web, et en mode quirks, dans lequel le navigateur ramène certains de rendu des idées depuis le début du web). Ces modes de mise en place pour les fins de compatibilité descendante. Le vaste paysage de pages web qui ont été créés dans la première ère du web sont rendus conformément aux règles de leur temps, tandis que les nouveaux documents d'appel à la nouvelle vague de normes. Comme le temps passe, et de nouveaux formats sont imaginé, une DTD pourrait être créé.

Navigateur Écarts

Dans un monde idéal, une page qui est en train d'être chargé par un navigateur de lire le Doctype en haut et de l'utiliser pour chercher une Définition de Type de Document. Il serait alors utiliser le schéma de cette DTD comme base pour lire le reste du document. Doctypes, alors, serait indispensable pour la validation de balisage de documents. La DTD serait de fournir de la norme par rapport à laquelle votre document doit être validée.

Malheureusement, ce n'est pas un monde idéal. Les navigateurs ne pas forcément se comporter de façon constante ici, et si elles le font, la cohérence du comportement n'est pas tout à fait en ligne avec la vision initiale Doctypes. Bien que l'analyse est effectuée indépendamment du Doctype, les grands navigateurs au moins examiner le Doctype pour déterminer le mode de rendu. Si votre Doctype est absent ou incomplet, le navigateur sera probablement rendu en mode quirks. Pour bien écrite, moderne documents apparaissent correctement, le navigateur devrait être rendu dans les normes de la mode. Mozilla, Safari, et les versions les plus récentes de l'Opéra de mettre en œuvre un Presque Normes de la mode, qui est entièrement dédié à la transition des pages.

Lorsque vous modifiez le Doctype et remarquez des changements dans la façon dont une page est affichée, c'est parce que le navigateur peut être l'application d'un jeu légèrement différent de règles quand il essaie d'analyser le document. En conséquence, la page peut être un peu différent, selon que toutes ses pièces sont conformes à la DTD, ou au moins, selon le navigateur, que vos données valide dans le mode de rendu que le doctype suggère.

Le choix d'un Doctype

Dans la poursuite de respect des standards, de la stricte Doctypes doit être utilisé chaque fois que possible.

Lors de l'écriture dans le XHTML, ce Doctype est commune:

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

Lors de l'écriture en 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">

Certains autres communes doctypes pour XHTML et HTML 4 sont répertoriés ici, pour être complet:

<!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">

Le débat sur le Strict rapport de Transition Doctypes

Normes évangélistes ont appelé pour les développeurs web à cesser d'utiliser le Doctype Transitionnel sur les nouvelles pages et d'utiliser plutôt Stricte. Encore une fois, c'est un cas où la théorie et la pratique ont quelques difficultés à se réconcilier. L'original de l'espoir de la transition Doctype était de fournir une maison de transition pour la transition de l'héritage des sites web vers le respect des standards. Avec de transition doctypes, la restriction sur les éléments et les attributs est littéralement "moins strictes", afin que les développeurs seraient en mesure de faire leur travail fonctionnant sous le mode standard plus tôt, et la phase de la circulation des différences au fil du temps.

Il existe une controverse parce qu'il n'est pas toujours si simple pour un développeur de changer le Doctype dans un environnement d'entreprise. Développeurs Freelance et décideurs de petites et moyennes sites web peuvent souvent avoir un temps plus facile la détermination de leur Doctype et de rendre cette transition. Dans un environnement de production d'entreprise pour un très demandés service basé sur le web, il y a, par nature, plus dépendances complexes sur des systèmes hérités et de la 3ème partie du code de produits, qui eux-mêmes peuvent être sur une feuille de route pour l'enlèvement ou la refonte, mais l'exécution de ces modifications doit être fait méthodiquement et progressivement.

Des 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 utile outil en ligne à http://validator.w3.org/ pour la vérification et la validation des documents en fonction de leurs normes. Il existe de nombreuses autres 3ème partie outils et les extensions de navigateur avec des fonctionnalités similaires.

7voto

cic Points 2225

Les navigateurs ne se soucient pas ce que doctype vous utilisez (enfin, presque vrai), ils l'utilisent pour une chose et une seule chose: décider quel mode de rendu à utiliser. Voir, par exemple, le Fx ou de l'Opéra de documentation pour des exemples du monde réel sur ce que les algorithmes utilisés pour décider du mode à utiliser (je pense qu'il y a un peu de documentation pour IE, enfouie quelque part dans MSDN trop ... Cela peut être la bonne page, je ne sais pas, désolé).

Il y a cependant deux modes majeurs dans la plupart des navigateurs (certains navigateurs ont un presque normes en mode trop):

  • en mode quirks (en l'absence de "corriger" doctype est trouvé, "corriger" des navigateurs point de vue): essayez de rendre le document comme certains l'ancienne version de IE faire (l'une des différences les plus importantes, c'est à dire affecte le rendu le plus, c'est que certains navigateurs exploits de l' IE modèle de boîte de bug dans ce mode),
  • et le mode standard (utilisé lorsque le navigateur trouvé un doctype elle considère comme correct): essayer de faire comme les normes qui le dit.

Vous pouvez utiliser (non-standard) document.compatMode propriété dans les précédentes, les navigateurs afin de vérifier le mode qui a été utilisé pour rendre le document en cours.

(Note sur le XHTML: je suppose que vous vous servir de documents au format HTML (text/html), si vous vous servir de document XHTML (probablement en application/xhtml+xml) de la plupart des navigateurs sauts en mode standard directement et ne se soucient pas le doctype à tous les autant que je sache.)

BTW: la recommandation (ou, ce qui ressemblait à une recommandation) dans l'autre réponse est cassé, la transition DTD doit pas être utilisé sur de nouveaux documents. Toujours utiliser strict (le terme "strict" est une sorte d'induire en erreur, doit être "par défaut", ou quelque chose de non-effrayant), de la période:

Les auteurs devraient utiliser la DTD Strict lorsque c'est possible, mais peut utiliser la DTD Transitoire lorsque le support de la présentation des éléments et des attributs requis. -- HTML 4.01: 22 Transitoire de la Définition de Type de Document.

Nous recommandons que les auteurs écrivent des documents conformes à la DTD strict plutôt que les Dtd défini par cette spécification. -- HTML 4.01: 4 Conformité: exigences et recommandations

Et il y a beaucoup de blog à ce sujet, par exemple, pas plus de Transition DOCTYPEs, veuillez (à partir de 2006, mais certaines, évidemment, ont encore des problèmes avec cela :).

Ce post a commencé par souligner que les navigateurs ne se soucie pas de ce que vous choisissez, puis développé dans une diatribe sur la façon de choisir la bonne DTD, intéressant ... Mais si vous vous apprêtez à passer(/déchets?) de temps et d'énergie à choisir une DTD, vous pourriez aussi bien choisir la bonne (à partir d'une norme HTML 4.01 point de vue).

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.)

3voto

Noah Goodrich Points 12645

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

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

Vous pouvez également trouver des avantages suivants:

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

3voto

hsivonen Points 5133

J'ai écrit un article qui explique comment doctypes sont impliqués dans le rendu de sélection de mode.

2voto

JacquesB Points 19878

Il y a beaucoup de désinformation autour de doctypes. La confusion provient du fait que les doctypes était à l'origine destiné à une fin (pour identifier les DTD, c'est à dire. la version HTML utilisée), mais dans le monde réel, les navigateurs sont utilisés pour un complètement sans rapport avec le but.

Doctype déclarations ne sont utilisés que pour une seule chose dans les navigateurs d'aujourd'hui, c'est la commutation entre les quirks mode de rendu et de normes mode de rendu pour le CSS. Donc, fondamentalement, c'est un CSS-chose, pas un HTML-chose.

Quirks mode de rendu est rétro-compatible avec certains vieux de rendu des bugs dans les navigateurs plus anciens, et est surtout utile pour l'héritage de contenu que vous ne voulez pas corriger. Nouveau contenu devrait toujours utiliser les normes de mode, car il rend plus correcte et cohérente entre les navigateurs. (Il y a encore des différences de rendu des navigateurs lors de l'utilisation de normes de la mode, mais il y a bien pire en mode quirks.)

Il n'a pas fait aucune 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 fondamentalement sélectionné comme ceci:

  • Si le document n'ont pas de doctype, quirks mode est sélectionné.
  • Si le document est un non reconnus doctype, les normes de mode est sélectionné. Cela signifie que vous pouvez écrire un hasard doctype comme <!DOCTYPE Chris> et qu'il fonctionne parfaitement bien.
  • Officiel W3C doctypes sans que l'url est correcte (la deuxième chaîne de la balise) sélectionne quirks mode. Tous les autres doctypes sélectionne 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 déclenche en mode quirks. Se hsivonens aperçu, lié d'une autre réponse.)

Historiquement doctypes ont prévu de déclarer la version et de l'-ensemble de balises HTML ont été utilisés. HTML4 définit plusieurs versions, où "de transition" permet à un certain nombre d'éléments sna attributs (comme la POLICE) n'est pas autorisée dans "strict". Un navigateur pourrait théoriquement processus de "stricte" des documents différents de "transition"-document. Cependant, aucun navigateur n'en fait cela.

Edit: scunliffe souligne que IE8 aura encore un autre mode de rendu "IE8 normes" de mode. Cependant, autant que je sache, ce mode n'est pas déclenchée par un doctype, mais par un meta-tag.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: