35 votes

Quels sont les différents doctypes en html et quelle est leur signification ?

Comme le titre l'indique, quels sont les différents doctypes disponibles et quelle est leur signification ? J'ai remarqué que la mise en page est un peu différente dans IE7 lorsque je passe de l'option

<!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 en a-t-il d'autres et quels en sont les effets ou les ramifications ?

Gracias.

0 votes

Cela devrait définitivement être le Wiki communautaire IMHO.

54voto

keparo Points 13747

Traditionnellement, un Doctype ou Déclaration de type de document associe le document à un Définition du type de document .

El Définition du type de document est une norme pour un document XML ou SGML spécifique. Le XML et le SGML eux-mêmes n'ont pas vraiment de schéma ou d'ensemble de règles très spécifiques, à part la façon dont les balises et les attributs fonctionnent en général. Vous pouvez considérer une DTD comme une description des règles pour un type particulier de document (comme HTML, SVG ou MathML). Elle indique quelles balises sont autorisées à quel endroit (par exemple, qu'une balise html doit contenir exactement un élément head suivi d'exactement un élément body élément).

Il existe des alternatives aux DTD, comme les schémas XML, qui sont plus couramment utilisés aujourd'hui.

Les navigateurs, en revanche, n'utilisent pas du tout les DTD. Ils lisent le Doctype pour déterminer le mode de rendu mais les règles d'analyse du document sont entièrement intégrées dans le navigateur.

C'est pourquoi HTML 5 a un Doctype (pour déterminer le mode de rendu) mais pas de DTD.

Modes de rendu

Les premiers navigateurs web étaient très bogués. Lorsque de nouvelles versions étaient publiées, elles devaient maintenir la compatibilité avec leurs prédécesseurs et leurs rivaux. Il était donc très difficile de corriger les bogues, car les sites Web construits dépendaient d'eux.

Pour résoudre ce problème, les navigateurs modernes disposent de différents modes de rendu ( mode standard pour rendre votre document et vos css selon les normes, et mode bizarrerie dans lequel le navigateur émule les bogues des navigateurs antérieurs, et mode presque standard qui se situe entre les deux).

Choisir un Doctype

Il y a deux facteurs à prendre en compte lors de la sélection d'un Doctype :

  • Cela déclenche-t-il le mode standard ? debe Les cas où vous devez être compatible avec des navigateurs qui ne supportent pas le mode standard sont très rares aujourd'hui).
  • Prend-il en charge les fonctionnalités dont j'ai besoin ?

En général, cela signifie que vous devez utiliser HTML 5. Il s'agit de la norme actuelle qui reflète le mieux le fonctionnement réel des navigateurs :

<!DOCTYPE html>

En cas d'échec. Les doctypes stricts évitent la plupart des fonctionnalités qui devraient être gérées par CSS.

Lorsque vous écrivez dans XHTML 1.0 ce Doctype est courant :

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

D'autres fonctionnalités obsolètes sont disponibles via :

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

Lorsque vous écrivez dans HTML 4.01 celui-ci est plutôt commun :

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

Les fonctions obsolètes étant dans

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

y

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

Notez que la plupart des exemples ci-dessus comportent des variantes (par exemple, vous pouvez omettre l'URL et vous fier à l'identifiant public) qui ont des implications pour la prise en charge du mode standard. Cet article comprend une liste exhaustive .

Débat sur les doctypes stricts et transitionnels

(Notez que ce qui suit est beaucoup, debe moins vrai en 2021 qu'en 2008)

Les évangélistes des normes ont demandé aux développeurs web de ne plus utiliser le Doctype Transitionnel sur les nouvelles pages et d'utiliser plutôt le Doctype Strict. Là encore, il s'agit d'un cas où la théorie et la pratique ont du mal à se réconcilier. L'espoir initial du Doctype transitionnel était de fournir une solution à mi-chemin pour la transition des anciens sites Web vers la conformité aux normes. Avec les doctypes transitoires, la restriction sur les éléments et les attributs est littéralement "moins stricte", ce qui permet aux développeurs de faire fonctionner leur travail en mode standard plus tôt, et d'éliminer progressivement les différences restantes.

La 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 indépendants et les créateurs de sites Web de petite ou moyenne taille peuvent souvent avoir plus de facilité à déterminer leur Doctype et à effectuer cette transition. Dans un environnement de production d'entreprise pour un service Web très demandé, il existe des dépendances intrinsèquement plus compliquées sur les systèmes existants et les produits de code tiers, qui peuvent eux-mêmes être sur une feuille de route pour la suppression ou la refonte, mais l'exécution de ces changements doit être faite méthodiquement et progressivement.

Outils utiles

Le W3C ( Consortium World Wide Web ) est un groupe qui joue un rôle actif dans la définition de ce type de normes. Il dispose d'un outil en ligne utile à l'adresse http://validator.w3.org/ pour vérifier et valider les documents par rapport à leurs normes. Il existe de nombreux autres outils tiers et extensions de navigateur avec une fonctionnalité similaire.

7voto

cic Points 2225

Navigateurs je m'en fiche quel doctype vous utilisez (enfin, presque vrai), ils l'utilisent pour une seule et unique chose : décider quel mode de rendu à utiliser. Voir, par exemple, le Fx o Documentation d'Opera pour des exemples concrets sur les algorithmes utilisés pour décider du mode à utiliser (je suppose qu'il y a de la documentation pour IE cachée quelque part dans MSDN aussi ...). [C'est peut-être la bonne page]( http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx)) Je ne sais pas, désolé).

Il existe cependant deux modes principaux dans la plupart des navigateurs (certains navigateurs disposent d'une fonction mode presque standard aussi) :

  • mode bizarrerie (utilisé lorsqu'aucun doctype "correct" n'est trouvé, "correct" du point de vue des navigateurs) : essaie de rendre le document comme le ferait une ancienne version d'IE (l'une des différences les plus importantes, c'est-à-dire celle qui affecte le plus le rendu, est que certains navigateurs exploitent l'attribut Bug du modèle de boîte IE dans ce mode),
  • y mode standard (utilisé lorsque le navigateur a trouvé un doctype qu'il considère comme correct) : essayer de faire ce que les normes disent.

Vous pouvez utiliser (la méthode non standard) document.compatMode dans les navigateurs mentionnés ci-dessus pour vérifier quel mode a été utilisé pour rendre le document actuel.

(Note sur le XHTML : J'ai supposé que vous serviez vos documents en tant que HTML ( text/html ), si vous servez votre document comme XHTML (probablement application/xhtml+xml ) la plupart des navigateurs passent directement en mode standard et ne se soucient pas du tout du doctype AFAIK).

BTW : la recommandation (ou, ce qui ressemblait à une recommandation) dans l'autre réponse est rompue, la transitionnel La DTD ne doit pas être utilisée sur les nouveaux documents. Utilisez toujours strict (le terme "strict" est un peu trompeur, il devrait être "default" ou quelque chose de moins effrayant), point final :

Les auteurs doivent utiliser la DTD Strict lorsque cela est possible, mais peuvent utiliser la DTD Transitional lorsque la prise en charge des attributs et des éléments de présentation est requise. -- HTML 4.01 : 22 Définition de type de document transitoire .

Nous recommandons aux auteurs d'écrire des documents 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 de nombreux articles de blog à ce sujet, par exemple plus de DOCTYPE transitoires, s'il vous plaît (à partir de 2006, mais un peu de J'ai toujours des problèmes avec ça, évidemment :).

Ce billet a commencé par souligner que les navigateurs ne se soucient pas de ce que vous choisissez, puis s'est transformé en une diatribe sur la façon de choisir la bonne DTD, intéressant ... Mais si vous dépensez (ou gaspillez ?) du temps et de l'énergie pour choisir une DTD, autant choisir la bonne (du point de vue de la norme HTML 4.01).

Ou vous pouvez ignorer tout cela et utiliser ce qui suit à la place, bientôt de toute façon :

<!doctype html>

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

0 votes

Pour le développement (lire : test de correction par validation), les doctypes hacer jouent un rôle. Après cela, ce que vous avez dit s'applique.

3voto

Noah Goodrich Points 12645

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 les informations suivantes utiles :

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

3voto

hsivonen Points 5133

3voto

JacquesB Points 19878

Il y a beaucoup de désinformation autour des doctypes. La confusion vient du fait que les doctypes étaient à l'origine destinés à un but précis (identifier la DTD, c'est-à-dire la version HTML utilisée), mais dans les navigateurs du monde réel, ils sont utilisés dans un but complètement différent.

Les déclarations de type Doctype ne sont utilisées que pour une chose dans les navigateurs d'aujourd'hui, qui consiste à passer d'un mode à l'autre. bizarreries mode de rendu et normes mode de rendu pour les CSS. En fait, il s'agit d'une question de CSS et non de HTML.

Le mode de rendu Quirks est rétrocompatible avec certains anciens bogues de rendu dans les anciens navigateurs, et est surtout utile pour les contenus anciens que vous ne voulez pas corriger. Le nouveau contenu devrait toujours utiliser le mode standard, car il offre un rendu plus correct et plus cohérent entre les navigateurs. (Il existe toujours des différences de rendu entre les navigateurs lorsqu'on utilise le mode standard, mais elles sont bien pires en mode quirks).

Elle le fait no Le fait que vous choisissiez un docytype HTML ou XHTML ne fera aucune différence, pas plus que le fait que vous choisissiez un doctype strict ou transitionnel. Le mode de rendu est essentiellement sélectionné comme suit :

  • Si le document n'a pas de doctype, bizarreries est sélectionné.
  • Si le document a un non comptabilisé doctype, normes est sélectionné. Cela signifie que vous pouvez écrire un doctype aléatoire comme <!DOCTYPE Chris> et cela fonctionnera parfaitement bien.
  • Doctypes officiels du W3C sans l'url correcte (la deuxième chaîne dans le tag) sélectionne bizarreries mode. Tous les autres doctypes sélectionnent le mode standard. (Edit : bien sûr, c'est plus complexe que cela, et il y a même des différences entre les navigateurs pour savoir lequel des doctypes reconnus déclenche le mode quirks. Voir Aperçu des hsivonens , lié à une autre réponse).

Historiquement, les doctypes étaient destinés à déclarer quelle version et quel sous-ensemble du HTML étaient utilisés. HTML4 définit plusieurs versions, où "transitional" autorise un certain nombre d'éléments et d'attributs qui (comme FONT) ne sont pas autorisés dans "strict". Un navigateur pourrait théoriquement traiter les documents "stricts" différemment des documents "transitionnels". Cependant, aucun navigateur ne fait réellement cela .

Edit : scunliffe signale qu'IE8 aura encore un autre mode de rendu, le mode "IE8 standards". Cependant AFAIK ce mode n'est pas déclenché par un doctype mais par un meta-tag.

1 votes

Non, ce n'est pas seulement une question de CSS. Les navigateurs se comportent également différemment lorsqu'ils accèdent au DOM dans des modes différents (ou du moins IE le fait), pire encore dans IE8, il y a 3 modes séparés, quirks, standards, et IE8 standards mode.

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:

X