web-dev-qa-db-fra.com

Qu'est-ce que DOCTYPE?

  • Qu'est-ce que DOCTYPE et pourquoi dois-je l'utiliser?
  • Quels sont les différents DOCTYPE que je peux utiliser?
  • Quelle est la différence entre les normes et le mode bizarreries, et quelles sont les bizarreries que je peux rencontrer avec des DOCTYPE définis différemment?

Enfin, quel est le DOCTYPE approprié que je devrais utiliser?

171
Bob

Fondamentalement, le DOCTYPE décrit le code HTML qui sera utilisé dans votre page.

Les navigateurs utilisent également le DOCTYPE pour déterminer comment rendre une page. Ne pas inclure un DOCTYPE ou inclure un DOCTYPE incorrect peut déclencher le mode bizarreries. Le kicker ici est que le mode excentrique dans Internet Explorer est assez différent du mode excentrique dans Firefox (et d'autres navigateurs), ce qui signifie que vous aurez beaucoup beaucoup travail plus difficile en essayant de s'assurer que votre page fonctionne de manière cohérente dans tous les navigateurs si les pages sont rendues en mode bizarrerie que vous le feriez si elles sont rendues en mode standard.

Wikipedia a un résumé plus détaillé des différences de rendu lors de l'utilisation de divers DOCTYPE . XHTML est activé par certains doctypes, et il y a pas mal de débats sur l'utilisation de XHTML qui est bien couvert en XHTML - mythes et réalité .

Il existe des différences subtiles entre les différents doctypes de rendu de "plainte standard", tels que le doctype HTML5 (<!DOCTYPE html>, avant HTML5 uniquement connu sous le nom de "skinny doctype" qui ne déclenche pas le rendu standardisé dans les anciens navigateurs) et d'autres DOCTYPE comme celui-ci pour HTML 4.01 transitionnel:

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

Le DOCTYPE indique à l'agent utilisateur consommateur (navigateurs Web, robots d'indexation Web, outils de validation) de quel type de document est le fichier. Son utilisation garantit que le consommateur analyse correctement le code HTML comme vous le souhaitiez.

Il existe plusieurs DOCTYPES différents pour HTML, XHTML et Framesets et chacun d'eux a deux modes Strict et Transitional. Strict dit que votre balisage utilise exactement les normes définies. Voir DTD W3C page pour plus de détails.

Quirksmode est fondamentalement la méthode de mise en page des jours de guerre du navigateur où les normes étaient beaucoup moins respectées et définies. Généralement, une page en mode standard, qui est valide, sera mise en page de manière plus cohérente sur différents navigateurs, mais peut manquer de certaines fonctionnalités dont vous avez besoin. L'une de ces fonctionnalités est l'attribut cible de la balise d'ancrage. Le site Quirksmode est une excellente ressource pour ces différences.

Une dernière pensée est que la nouvelle norme HTML5 propose d'utiliser un DOCTYPE très simple:

<!DOCTYPE html>

L'utilisation de ce DOCTYPE est un moyen compatible avec les versions ultérieures de spécifier que vos pages sont en mode standard et au format HTML. Il s'agit de la méthode utilisée par Google, et il est relativement facile de s'en souvenir. Je recommande d'utiliser ce DOCTYPE sauf si vous prévoyez d'utiliser XHTML.

26
Rob

Un doctype définit quelle version de HTML/XHTML votre document utilise. Vous voudriez utiliser un doctype pour que lorsque vous exécutez votre code via des validateurs, les validateurs sachent avec quelle version de HTML/XHTML vérifier. Cette page donne un bon aperçu:

N'oubliez pas d'ajouter un doctype

Les doctypes courants que vous pouvez utiliser sont répertoriés ici:

Liste recommandée des DTD

Le type de document à utiliser dépend du code que vous utilisez, mais pour vous faire une idée, essayez d'exécuter votre code via le validateur W3C et utilisez le Type de document menu déroulant dans le menu "Plus d'options" pour essayer différents doctypes.

Service de validation de balisage W3C

6
GR1000

En HTML (y compris XHTML) tel qu'il est utilisé sur les pages Web, DOCTYPE est une chaîne qui déclenche l'un des quelques modes de navigation (mode bizarreries, mode standard, mode presque standard), selon l'orthographe exacte du DOCTYPE. Vous souhaitez l'utiliser pour sélectionner un mode de navigation qui convient le mieux à votre page.

Formellement, en SGML et XML, une déclaration DOCTYPE est une référence à une définition de type de document (DTD), qui spécifie les règles de syntaxe formelles du langage de balisage. Aucun navigateur n'a jamais utilisé de DTD pour quoi que ce soit ni même y a accédé. Cependant, ils sont utilisés par les validateurs de balisage SGML et XML tels que W3C Markup Validator , sauf en mode HTML5. Par conséquent, le choix de DOCTYPE détermine le fonctionnement d'un validateur si le document lui est soumis. Cependant, le mode de fonctionnement du validateur peut également être sélectionné dans son interface utilisateur. (Les processeurs SGML et XML peuvent également utiliser DOCTYPE de différentes manières, mais la question est apparemment censée être limitée au contexte HTML et aux navigateurs Web et aux logiciels étroitement liés.)

Il n'y a pas de liste officielle de DOCTYPE. Chaque spécification ou brouillon HTML définit son propre DOCTYPE ou DOCTYPE. L'ensemble des DOCTYPE reconnus par les navigateurs lors de la sélection du mode varie selon le navigateur. En pratique, il n'y a aucune raison d'utiliser un DOCTYPE autre que <DOCTYPE html>tel que défini dans HTML5 , bien que HTML5 répertorie également quelques "DOCTYPE hérités". Vous pouvez utiliser ce DOCTYPE si vous voulez le mode standard (recommandé pour les nouvelles pages) et ne pas utiliser de DOCTYPE si vous voulez le mode excentrique (dont vous pourriez avoir besoin pour les pages héritées).

Le "mode standard" signifie généralement le mode de fonctionnement où un navigateur suit au mieux les spécifications HTML, CSS, DOM et autres. Cela ne signifie généralement pas une conformité totale. Le "mode Quirks" est différent dans les différents navigateurs, mais généralement cela signifie une tentative d'imiter le comportement de très vieux navigateurs comme IE 5. Le but est de garder les anciennes pages en fonctionnement, en supposant que ils peuvent s'appuyer sur les fonctionnalités et les bogues des anciens navigateurs. Voir la description Que se passe-t-il en mode Quirks? Notez qu'il existe un concept assez différent et plus limité de "mode quirks" en HTML5, qui ressemble étroitement à le document appelé Quirks Mode Living Standard .

Un problème typique est que les largeurs des éléments sont calculées différemment en mode excentrique et en mode standard. Cela signifie que la mise en page d'une page peut être plus ou moins modifiée ou même totalement gâchée, si une page conçue pour fonctionner en mode bizarreries est affichée en mode standard (ou vice versa).

Vous devez donc utiliser <!DOCTYPE html> pour les nouvelles pages et conservez le DOCTYPE (le cas échéant) que vous avez utilisé pour les anciennes pages.

Cependant, le mode excentrique signifie, dans certains navigateurs, que de nombreuses nouvelles fonctionnalités de CSS ne sont pas prises en charge. Cela signifie que si vous souhaitez améliorer une ancienne page avec une fonctionnalité CSS3, il peut être nécessaire de passer à un DOCTYPE qui déclenche le mode standard. Dans un tel cas, vous devez examiner et tester la page pour voir si elle fonctionnera en mode standard.

3
Jukka K. Korpela

Les doctypes indiquent au navigateur dans quelle langue la page est écrite, que ce soit HTML ou XHTML. Par exemple,

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

dire au navigateur de rendre la page en HTML4 strict. Les navigateurs plus anciens utilisés pour afficher les pages de manière incorrecte et, par conséquent, les navigateurs plus récents simulent les erreurs des navigateurs plus anciens lorsqu'ils trouvent un ancien doctype.

Aujourd'hui, vous devez utiliser au moins HTML4 ou mieux XHTML.

Une entrée de blog sur les doctypes est Fixez votre site avec le bon DOCTYPE! (de A List Apart =).

2
Georg Schölly

Sur le Web, un doctype ne fait que dire au navigateur si vous voulez un mode standard, presque standard ou excentrique.

Les changements en mode bizarreries dépendent du navigateur: Firefox, Opera, Safari et Chrome implémente un ensemble limité de bizarreries, comme la suppression de l'espace pour les descendants de texte dans du code comme <table><tr><td><img></td></tr></table> (Solution: td img { vertical-align:bottom; }). IE, d'autre part, revient au moteur de rendu dans IE5.5. Cela signifie que vous ne pourrez pas utiliser n'importe lequel des nouvelles fonctionnalités implémentées depuis 2000.

Pour déclencher le mode standard, je suggère d'utiliser le doctype HTML5, <doctype html>, car c'est le plus facile à retenir.

1
Ms2ger

Tout d'abord, il n'y a pas un seul doctype que vous devriez utiliser, mais la plupart des concepteurs essaient de le faire fonctionner dans XHTML 1.0 Strict.

Un doctype n'est rien de plus qu'une déclaration des balises que vous pouvez utiliser dans votre html (bien que les navigateurs puissent utiliser plus ou moins que ce qui est défini) Vous pouvez réellement ouvrir le fichier doctype et commencer à lire ( XHTML 1.0 Strict )

Si vous ne spécifiez pas de doctype, le navigateur fera de son mieux pour deviner mais ne trouvera pas toujours le type correct.

Le mode Quirks est juste une technique utilisée par les navigateurs pour être rétrocompatible, un excellent exemple de mode Quirks est de savoir comment IE rend les boîtes

1
Ólafur Waage

Un doctype est un document qui décrit à quoi peut ressembler le contenu d'un document de type xhtml (comme une page Web). Remarque: cela ne définit que la syntaxe de ladite page, le rendu de la page n'est PAS défini par la DTD!

Par exemple, un doctype pourrait définir comment le <table>- la balise peut ressembler - aux attributs qu'elle accepte et aux valeurs/types de valeurs acceptés pour chaque attribut. Considérez-le comme un lexique pour votre page Web actuelle.

Wikipedia a une page informative sur les différents doctypes qui sont couramment utilisés. Attention, rien ne vous empêche de créer votre propre doctype. Il est cependant probable que le navigateur ne sache probablement pas comment rendre votre document.

La DTD à utiliser dépend de ce que vous allez écrire. XHTML a une DTD complètement différente de HTML, par exemple.

0
Henrik Paul