Qué es DOCTYPE?


  • ¿Qué es DOCTYPE y por qué quiero usarlo?
  • ¿Cuáles son los diferentes tipos de documentos que puedo usar?
  • ¿Cuál es la diferencia entre los estándares y el modo de peculiaridades, y cuáles son algunas peculiaridades que puedo encontrar con diferentes tipos de documentos establecidos?

Por último, ¿cuál es el TIPO de DOCUMENTO adecuado que debería usar?

Author: Jukka K. Korpela, 2009-01-06

9 answers

Básicamente, el DOCTYPE describe el HTML que se utilizará en su página.

Los navegadores también usan el DOCTYPE para determinar cómo representar una página. No incluir un DOCTYPE o incluir un DOCTYPE incorrecto puede desencadenar el modo quirks. El truco aquí es que el modo quirks en Internet Explorer es bastante diferente del modo quirks en Firefox (y otros navegadores), lo que significa que tendrá un mucho trabajo más difícil tratando de garantizar que su página funcione de manera consistente en todos los navegadores si las páginas son renderizados en modo quirks de lo que lo hará si se renderizan en modo estándar.

Wikipedia tiene un resumen más detallado de las diferencias en el renderizado cuando se usan varios DOCTYPEs. XHTML está habilitado por ciertos tipos de documentos, y hay bastante debate sobre el uso de XHTML que está bien cubierto en XHTML - mitos y realidad.

Hay diferencias sutiles entre diferentes tipos de documentos de representación de "quejas de estándares", como el doctype HTML5 (<!DOCTYPE html>, anterior para HTML5 solo conocido como el "skinny doctype" que no activa el renderizado estandarizado en navegadores más antiguos) y otros DOCTYPEs como este para HTML 4.01 transitional:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 71
Author: Walter Rumsby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-10 00:04:05

El DOCTYPE le dice al agente de usuario consumidor (navegadores web, rastreadores web, herramientas de validación) qué tipo de documento es el archivo. Su uso asegura que el consumidor analice correctamente el HTML como usted lo desea.

Hay varios TIPOS de DOCUMENTOS diferentes para HTML, XHTML y Framesets y cada uno de ellos tiene dos modos Strict y Transitional. Strict dice que su marcado está utilizando exactamente los estándares definidos. Ver W3C DTDs página para más detalles.

Quirksmode es básicamente el método de diseño de los días de guerra de navegadores cuando los estándares eran mucho menos respetados y definidos. Por lo general, una página de modo estándar, que es válida, se diseñará de manera más consistente en varios navegadores, pero puede carecer de ciertas características que necesite. Una de estas características es el atributo de destino de la etiqueta de anclaje. El sitio Quirksmode es un gran recurso para estas diferencias.

Un pensamiento final es que el nuevo estándar HTML5 propone utilizar un DOCTYPE:

<!DOCTYPE html>

Usar este DOCTYPE es una forma compatible para especificar que sus páginas están en modo estándar y son HTML. Este es el método que utiliza Google, y es razonablemente fácil de recordar. Recomiendo usar este DOCTYPE a menos que planee usar XHTML.

 24
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-17 03:55:16

Un doctype define qué versión de HTML/XHTML utiliza su documento. Debería usar un doctype para que cuando ejecute su código a través de validadores, los validadores sepan con qué versión de HTML / XHTML verificar. Esta página proporciona una buena visión general:

No olvides añadir un doctype

Los tipos de documentos comunes que puede usar se enumeran aquí:

Lista recomendada de DTDs

El tipo de documento con el que debe ir depende del código que esté utilizando, pero para obtenga una idea, intente ejecutar su código a través del validador W3C y use el menú desplegable Document Type en el menú "Más opciones" para probar diferentes tipos de documentos.

Servicio de Validación de Marcado W3C

 6
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-06 01:52:06

En HTML (incluyendo XHTML) como se usa en las páginas web, DOCTYPE es una cadena que activa uno de los pocos modos de navegador (modo quirks, modo estándar, modo casi estándar), dependiendo de la ortografía exacta del DOCTYPE. Desea usarlo para seleccionar el modo de navegador que mejor se adapte a su página.

Formalmente, en SGML y XML, una declaración DOCTYPE es una referencia a una Definición de Tipo de documento (DTD), que especifica las reglas de sintaxis formales del lenguaje de marcado. Ningún navegador ha utilizado DTDs para cualquier cosa o incluso accedió a ellos. Sin embargo, son utilizados por validadores de marcado SGML y XML como el Validador de marcado W3C , excepto en modo HTML5. Por lo tanto, la elección de DOCTYPE determina cómo funciona un validador si se le envía el documento. Sin embargo, el modo de operación del validador también se puede seleccionar en su interfaz de usuario. (Los procesadores SGML y XML también pueden usar DOCTYPEs de otras maneras diferentes, pero la pregunta aparentemente está destinada a limitarse al contexto HTML y a la web navegadores y software estrechamente relacionado.)

No existe una lista autorizada de tipos de documentos. Cada especificación HTML o borrador define su propio DOCTYPE, o DOCTYPEs. El conjunto de tipos de documentos reconocidos por los navegadores al seleccionar el modo varía según el navegador. En la práctica, no hay razón para usar un DOCTYPE que no sea <DOCTYPE html> como se define en HTML5, aunque HTML5 también enumera algunos "DOCTYPEs heredados". Puede usar ese DOCTYPE si desea el modo estándar (recomendado para páginas nuevas) y no usar ningún DOCTYPE si desea el modo peculiaridades (que puede necesitar para las páginas heredadas).

"Modo estándar" generalmente significa el modo de operación donde un navegador sigue HTML, CSS, DOM y otras especificaciones lo mejor que puede. Por lo general, no significa conformidad completa. "Modo Peculiares" es diferente en diferentes navegadores, pero generalmente significa un intento de imitar el comportamiento de navegadores muy antiguos como IE 5. El propósito es mantener las páginas antiguas funcionando, bajo el supuesto de que pueden confiar en características y errores en los navegadores antiguos. Ver la descripción ¿Qué sucede en el Modo Peculiaridades? Tenga en cuenta que hay un concepto bastante diferente, más limitado de "modo quirks" en HTML5, que se asemeja mucho al documento llamado Modo Quirks Living Standard.

Un problema típico es que los anchos de los elementos se calculan de manera diferente en el modo quirks y en el modo estándar. Esto significa que el diseño de una página puede ser más o menos cambiado o incluso totalmente desordenado, si una página diseñada para funcionar en modo peculiaridades se visualiza en modo estándar (o viceversa).

Así que debes usar <!DOCTYPE html> para las páginas nuevas y mantener cualquier DOCTYPE (si lo hay) que hayas estado usando para las páginas antiguas.

Sin embargo, el modo quirks significa, en algunos navegadores, que muchas características nuevas de CSS no son compatibles. Esto significa que si desea mejorar una página antigua con alguna característica de CSS3, puede ser necesario cambiar a un DOCTYPE que active el modo estándar. En tal caso, debe revisar y probar la página para ver si lo hará ejecutar en modo estándar.

 3
Author: Jukka K. Korpela,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-15 15:19:59

Los Doctypes le dicen al navegador en qué idioma está escrita la página, ya sea HTML o XHTML. Por ejemplo,

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

Dile al navegador que muestre la página como HTML4 strict. Los navegadores más antiguos se utilizan para representar las páginas de forma incorrecta y, por lo tanto, los navegadores más nuevos simulan errores de los navegadores más antiguos cuando encuentran un doctype antiguo.

Hoy debe usar al menos HTML4 o mejor XHTML.

Una entrada de blog sobre doctypes es ¡Arregla Tu Sitio Con el DOCTYPE Correcto! (desde Una Lista Aparte).

 2
Author: Georg Schölly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-28 08:23:10

En primer lugar, no hay un doctype que deba usar, pero la mayoría de los diseñadores intentan que funcione dentro de XHTML 1.0 Strict.

Un doctype no es más que una declaración de qué etiquetas puede usar dentro de su html (aunque los navegadores pueden usar más o menos de lo que está definido) En realidad puede abrir el archivo doctype y comenzar a leer (XHTML 1.0 Strict )

Si no especifica un doctype, el navegador hará todo lo posible para adivinar, pero no siempre acierta tipo.

El modo Quirks es solo una técnica utilizada por los navegadores para ser compatible con versiones anteriores, un gran ejemplo de modo quirks es cómo IE renderiza cajas

 1
Author: Ólafur Waage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 23:32:57

En la web, un doctype no hace más que decirle al brower si desea estándares, casi estándares o modo peculiares.

Los cambios en el modo peculiaridades dependen del navegador: Firefox, Opera, Safari y Chrome implementan un conjunto limitado de peculiaridades, como eliminar el espacio para los descensores de texto en código como <table><tr><td><img></td></tr></table> (solución: td img { vertical-align:bottom; }). IE, por otro lado, vuelve al motor de renderizado en IE5.5. Eso significa que no podrá usar ninguna de las nuevas características implementadas desde entonces 2000.

Para activar el modo estándar, sugiero usar el doctype HTML5, <doctype html>, ya que es el más fácil de recordar.

 1
Author: Ms2ger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-06 18:31:39

La declaración no es una etiqueta HTML; es una instrucción para el navegador web sobre en qué versión de HTML está escrita la página.

En HTML 4.01, la declaración se refiere a un DTD, porque HTML 4.01 se basó en SGML. La DTD especifica las reglas para el lenguaje de marcado, para que los navegadores representen el contenido correctamente.

 1
Author: ancevinz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-06 06:04:17

Un doctype es un documento que describe cómo se puede ver el contenido de un documento similar a xhtml (como una página web). Nota: esto define solo la sintaxis de dicha página, la representación de la página NO está definida por el DTD!

Por ejemplo, un doctype podría definir cómo puede verse la etiqueta <table>-qué atributos acepta y qué valores/tipos de valor se aceptan para cada atributo. Piense en ello como un léxico para su página web actual.

Wikipedia tiene una página informativa sobre los diversos tipos de documentos que son de uso común. Eso sí, no hay nada que te impida crear tu propio doctype. Sin embargo, lo más probable es que el navegador probablemente no sepa cómo procesar su documento.

Qué DTD usar depende de lo que vaya a escribir. XHTML tiene un DTD completamente diferente que HTML, por ejemplo.

 0
Author: Henrik Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 23:37:42