Pregunta

Como lo describe el título, ¿cuáles son los diferentes tipos de documentos disponibles y qué significan? Noto que el diseño se ve un poco diferente en IE7 cuando cambio de

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

a

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

¿Hay otros y cuáles son los efectos o ramificaciones?

¡Gracias!

¿Fue útil?

Solución

Un Doctype o Declaración de tipo de documento asocia el documento con una Definición de tipo de documento .

La Definición de tipo de documento es un estándar para un documento XML. Hay muchos DTD, tanto para documentos XML como XHTML. XML en sí mismo no tiene mucho de un esquema o un conjunto muy específico de reglas, aparte del requisito de que todo esté bien formado. Puede pensar en una DTD como un esquema más específico para el documento .

Modos de representación

Debido al movimiento de estándares, la mayoría de los navegadores modernos tienen modos de renderización diferentes ( modo de estándares , para renderizar su documento y CSS de acuerdo con estándares web más recientes, y modo de peculiaridades , en el que el navegador trae algunas ideas de renderizado de los primeros días de la web). Estos modos se instituyen para fines de compatibilidad con versiones anteriores. El vasto paisaje de páginas web que se crearon en la primera era de la web se representa de acuerdo con las reglas de su tiempo, mientras que los documentos más nuevos pueden apelar a la nueva ola de estándares. A medida que pasa el tiempo y se imaginan nuevos formatos, potencialmente se podría crear una DTD correspondiente.

Discrepancias del navegador

En un mundo ideal, una página que está siendo cargada por un navegador leería el Doctype en la parte superior y lo usaría para buscar una Definición de Tipo de Documento. Luego usaría el esquema de esa DTD como la base para leer el resto del documento. Doctypes, entonces, sería esencial para validar los documentos de marcado. El DTD proporcionaría el estándar contra el cual se validará su documento.

Desafortunadamente, no es un mundo ideal. Los navegadores no necesariamente se comportan consistentemente aquí, y si lo hacen, el comportamiento consistente no está muy en línea con la visión original de Doctypes. Aunque el análisis se realiza independientemente del Doctype, los principales navegadores al menos examinarán el Doctype para determinar el modo de representación. Si su Doctype está ausente o está incompleto, es probable que el navegador se muestre en modo de peculiaridades . Para que los documentos modernos, bien escritos, aparezcan correctamente, el navegador debe mostrarse en modo estándar . Mozilla, Safari y algunas versiones recientes de Opera implementan un Casi estándares modo, que está dedicado por completo a las páginas de transición.

Cuando cambia el Doctype y observa cambios en la forma en que se muestra una página, es porque el navegador puede estar aplicando un conjunto de reglas ligeramente diferente cuando intenta analizar el documento. Como consecuencia, la página resultante puede ser un poco diferente, dependiendo de si todas sus partes se ajustan a la DTD, o al menos, según el navegador, que sus datos validen dentro del modo de representación que sugiere el doctype.

Elegir un Doctype

Para lograr el cumplimiento de las normas, se deben usar Doctypes estrictos siempre que sea posible.

Al escribir en XHTML , este Doctype es común:

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

Al escribir en HTML 4.1 , este es común en su lugar:

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

Algunos otros tipos de documentos comunes para XHTML y HTML 4 se enumeran aquí, para completar:

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

Debate sobre los tipos de texto estrictos frente a transitorios

Los evangelistas de los estándares han pedido a los desarrolladores web que dejen de usar el Doctype de transición en las páginas nuevas y, en su lugar, utilicen Strict. Nuevamente, este es un caso en el que la teoría y la práctica tienen algunas dificultades para conciliarse. La esperanza original del Doctype de transición era proporcionar un espacio intermedio para la transición de sitios web heredados hacia el cumplimiento de las normas. Con los doctypes de transición, la restricción de elementos y atributos es literalmente "menos estricta", por lo que los desarrolladores podrán ejecutar su trabajo en modo estándar antes y eliminar las diferencias pendientes con el tiempo.

Existe controversia porque no siempre es tan simple para un desarrollador cambiar el Doctype en un entorno empresarial. Los desarrolladores y fabricantes independientes de sitios web pequeños o medianos a menudo pueden tener un tiempo más fácil para determinar su Doctype y hacer esta transición. En un entorno de producción empresarial para un servicio basado en la web altamente demandado, existen dependencias intrínsecamente más complicadas de los sistemas heredados y productos de código de terceros, que pueden estar en una hoja de ruta para su eliminación o rediseño, pero la ejecución de dichos cambios debe ser hecho metódica e incrementalmente.

Herramientas útiles

El W3C ( Consorcio de la World Wide Web ) es un grupo que juega un papel activo en la definición de este tipo de estándares. Mantienen una útil herramienta en línea en http://validator.w3.org/ para verificar y validar documentos según sus estándares. Hay muchas otras herramientas de terceros y extensiones de navegador con una funcionalidad similar.

Otros consejos

Navegadores no me importa qué tipo de documento utiliza (bueno, casi cierto) , lo usan para una cosa y solo una cosa: para decidir qué modo de procesamiento usar. Ver p. Fx o Documentación de Opera para ejemplos del mundo real sobre qué algoritmos se usan para decidir qué modo usar (supongo que también hay algo de documentación para IE enterrada en algún lugar de MSDN) ... [Esta puede ser la página correcta] ( http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx) , no sé, lo siento).

Sin embargo, hay dos modos principales en la mayoría de los navegadores (algunos navegadores tienen un casi modo estándar también):

  • modo de peculiaridades (utilizado cuando no se encuentra "doctype correcto", "correcto" desde el punto de vista del navegador): intente renderizar el documento como lo haría alguna versión anterior de IE ( Una de las diferencias más importantes, es decir, que afecta más a la representación, es que algunos navegadores explotan el IE box bug modelo en este modo),
  • y modo estándar (utilizado cuando el navegador encontró un tipo de documento que considera correcto): intente hacer lo que dicen los estándares.

Puede utilizar (no estándar) document.compatMode en los navegadores mencionados anteriormente para verificar qué modo se usó para representar el documento actual.

(Nota sobre XHTML: asumí que le sirve documentos como HTML ( text / html ), si le sirve documentos como XHTML (probablemente application / xhtml + xml ) la mayoría del navegador salta directamente al modo estándar y no se preocupa por el doctype en absoluto AFAIK.)

Por cierto: la recomendación (o, lo que parecía una recomendación) en la otra respuesta está rota, el transición DTD no debe utilizarse en documentos nuevos. Siempre use estricto (el término "estricto" es un poco engañoso, debería ser " predeterminado " o algo más que no da miedo), punto:

  

Los autores deben usar la DTD estricta cuando sea posible, pero pueden usar la DTD de transición cuando se requiere soporte para el atributo de presentación y los elementos. - HTML 4.01: 22 Definición del tipo de documento de transición .

     

Recomendamos que los autores escriban documentos que cumplan con la estricta DTD en lugar de las otras DTD definidas por esta especificación. - HTML 4.01: 4 Conformidad: requisitos y recomendaciones

Y hay muchas publicaciones de blog sobre esto, p. no más DOCTYPEs de transición, por favor (desde 2006, pero algunos , obviamente, todavía tengo problemas con esto :).

Esta publicación comenzó señalando que a los navegadores no les importa lo que elija, y luego se convirtió en una perorata sobre cómo elegir la DTD correcta, interesante ... ¿Pero si va a gastar (/ waste)? tiempo y energía para elegir un DTD, también podría elegir el correcto (desde una perspectiva estándar de HTML 4.01)

O , puede ignorar todo esto y utilizar lo siguiente, soon de todos modos :

<!doctype html>

( Esta respuesta ¿"alguna razón para no comenzar a usar el tipo de documento HTML 5?" estaba relacionado con la última parte).

Aquí está la explicación oficial de los distintos DTD del W3C:

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

También puede encontrar los siguientes beneficios:

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

Hay una gran cantidad de información errónea en torno a los tipos de documentos. La confusión surge del hecho de que doctypes originalmente estaba destinado a un propósito (identificar la DTD, es decir, la versión HTML utilizada), pero en los navegadores del mundo real se utilizan para un propósito completamente no relacionado.

Las declaraciones de

Doctype solo se usan para una cosa en los navegadores de hoy, que es cambiar entre el modo de representación de peculiaridades y el modo de representación de estándares para CSS. Así que básicamente es una cosa de CSS, no una cosa de HTML.

La representación en modo Quirks es retrocompatible con algunos errores de representación antiguos en navegadores más antiguos, y es principalmente útil para contenido heredado que no desea corregir. El contenido nuevo siempre debe utilizar el modo estándar, ya que se realiza de forma más correcta y coherente entre los navegadores. (Todavía hay diferencias de representación entre los navegadores cuando se usa el modo estándar, pero hay mucho peores en el modo peculiaridades).

No no hace una diferencia si elige un doctytype HTML o XHTML, y tampoco hará ninguna diferencia si elige un doctype estricto o de transición. El modo de representación se selecciona básicamente así:

  • Si el documento no tiene ningún tipo de documento, se selecciona el modo peculiaridades .
  • Si el documento tiene un doctype no reconocido , se selecciona el modo estándares . Esto significa que puede escribir un tipo de documento aleatorio como <! DOCTYPE Chris > y funcionará perfectamente bien.
  • Los documentos oficiales del W3C sin la url correcta (la segunda cadena en la etiqueta) selecciona el modo peculiaridades . Todos los demás doctypes seleccionan el modo estándar. (Editar: por supuesto, es más complejo que eso, e incluso difiere entre navegadores cuál de los doctypes reconocidos activa el modo peculiaridades. Se resumen de hsivonens , vinculado desde otra respuesta.

Históricamente, los doctypes estaban destinados a declarar qué versión y subconjunto de HTML se utilizaron. HTML4 define varias versiones, donde " transitional " permite una serie de elementos y atributos que (como FONT) no están permitidos en "estricto". En teoría, un navegador podría procesar " estricto " Documentos diferentes de " transición " -documento. Sin embargo, ningún navegador realmente hace esto .

Editar: scunliffe señala que IE8 tendrá otro modo de representación, "estándares IE8" modo. Sin embargo, AFAIK este modo no es activado por un doctype sino por una metaetiqueta.

Básicamente, el doctype determina qué tan loco será IE.

Si no lo configura en XHTML, o " estricto " estarás viviendo en un mundo de dolor cuando se trata de IE (incluso si lo configuras, seguirás odiando a IE, pero lo hace mucho mejor).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top