29 votos

HTML 4, HTML 5, XHTML, tipos MIME - el recurso definitivo

Los temas de HTML vs XHTML XHTML como text/html vs XHTML como XHTML son bastante complejas. Por desgracia, es difícil obtener una imagen completa, ya que la información se propaga principalmente en pedazos alrededor de la web o enterrado en lo profundo de W3C tech jerga. Además hay algo de desinformación que está circulando. Me propongo hacer de este el definitivo PARA que los recursos sobre el tema, describiendo los aspectos más importantes de:

  • HTML 4
  • HTML 5
  • XHTML 1.0 como text/html, application/xml+xhtml
  • XHTML 1.1 como application/xml+xhtml

¿Cuáles son las implicaciones prácticas de cada uno de ellos?
¿Cuáles son los errores más comunes?
¿Cuál es la importancia de la adecuada tipos MIME para cada uno de ellos?
¿Cómo los diferentes navegadores manejan ellos?

Me gustaría ver una respuesta por la tecnología. Estoy haciendo de esta una wiki de la comunidad, por lo que en lugar de contribuir redundante respuestas, por favor, edite respuestas para completar el cuadro. Siéntase libre para empezar con los talones. También siéntase libre de editar esta pregunta.

37voto

Alohci Puntos 30645

Contenido.

  • Terminología
  • Idiomas y Serializations
  • Especificaciones
  • Navegador de los Analizadores y el Contenido (MIME) Tipos de
  • Compatibilidad Del Navegador
  • Validadores y Definiciones de Tipo de Documento
  • Peculiaridades, Limitada Peculiaridades, Normas y modos.

Terminología

Una de las dificultades de describir esto es claramente que la terminología dentro de las especificaciones oficiales ha cambiado a lo largo de los años, ya que HTML se introdujo por primera vez. Lo que sigue a continuación se basa en HTML5 terminología. También, "archivo" se usa como un término genérico para la media de un archivo, documento, flujo de entrada, octeto arroyo, etc para evitar tener que hacer distinciones sutiles.

Idiomas y Serializations

HTML y XHTML se definen en términos de una lengua y de una serialización.

El lenguaje define el vocabulario de los elementos y atributos, y su modelo de contenido, es decir, que los elementos están permitidas en los que otros elementos, los atributos que son permitidos en el elemento que, junto con el propósito y el significado de cada elemento y atributo.

La serialización define cómo mark-up se utiliza para describir estos elementos y atributos dentro de un documento de texto. Esto incluye que las etiquetas son necesarios y que pueden ser inferidos, y las reglas para esas inferencias. Se describe cómo anular los elementos deben estar marcados (por ejemplo, " > " vs "/>") y cuando los valores de atributo deben ser citado.

Especificaciones

La especificación HTML 4.01 es la actual especificación que define tanto el lenguaje HTML y el código HTML de serialización.

La especificación XML 1.0 define una serialización, pero deja el idioma definido en el resto de especificaciones, que se denominan "de las aplicaciones de XML"

La XHTML 1.0 y 1.1 especificaciones están en uso. Esencialmente, ellos utilizan el mismo lenguaje HTML 4.01 pero el uso de diferentes serialización, uno que es compatible con la especificación XML 1.0. es decir, XHTML es una aplicación de XML.

El HTML5 (como de 2010-04-18, proyecto) especificación describe un nuevo lenguaje para HTML y XHTML. Este idioma es principalmente un superconjunto del lenguaje HTML 4.01, pero su intención es que sólo sea compatible con las herramientas de la web, (por ejemplo, navegadores, motores de búsqueda y herramientas de autor) y no con las anteriores especificaciones, donde surgen las diferencias. Así que el significado de algunos de los elementos son en ocasiones cambia a partir de las especificaciones anteriores. Del mismo modo, cada uno de los serializations son compatibles con las herramientas actuales.

Navegador de los Analizadores y el Contenido (MIME) Tipos de

Cuando un archivo de texto que se envía a un navegador, se analiza en su memoria interna de la estructura (modelo de objetos). Para ello se utiliza un analizador que sigue el código HTML de serialización de reglas o serialización XML reglas. Qué analizador se utiliza depende de lo que se deduce el tipo de contenido a ser, no a archivos locales en el "content-type" encabezado HTTP. Internamente, una vez que el archivo se ha analizado, el navegador trata el modelo de objetos casi de la misma manera, independientemente de si fue suministrado originalmente usando HTML o XHTML serialización.

Para un navegador para usar su XHTML analizador, el tipo de contenido de encabezado HTTP debe ser uno de los XML de los tipos de contenido. Más comúnmente, esto es application/xml o application/xhtml+xml. No XML tipo de contenido significa que el archivo, independientemente de si se cumple con todo el lenguaje XHTML y la serialización de las reglas o no, no será procesado por el navegador como XHTML.

El uso de un tipo de contenido HTTP de texto/html (o en la mayoría de retroceso de los escenarios, donde el tipo de contenido que falta o cualquier otro tipo XML) hará que el navegador utilice su código HTML de la serialización del analizador.

Una diferencia clave entre los dos analizadores es que el HTML de la serialización del analizador realiza la recuperación de errores. Si el archivo de entrada para el analizador no cumplir con el código HTML de serialización de las reglas, el analizador se recuperará en maneras de ingeniería inversa de los anteriores navegadores y llevar en la construcción de su modelo de objetos hasta que se alcanza el final del archivo. HTML5 contiene la primera definición normativa de la recuperación, pero ninguno de los principales que tiene el navegador envía una implementación del algoritmo habilitado en una versión como de 2010-04-26.

En contraste, la serialización XML parser, se detendrá cuando se encuentra con algo que no puede interpretar como XML (es decir, cuando descubre que no está el archivo XML bien formado). Esto es necesario de los analizadores por la especificación XML 1.0.

Compatibilidad Del Navegador

La mayoría de los navegadores modernos contienen soporte para un analizador de HTML y XML parser. Sin embargo, en las versiones de Microsoft Internet Explorer 8.0 y anteriores, el analizador de XML directamente no se puede crear un modelo de objetos para la representación de una página HTML. La estructura XML puede, sin embargo, ser procesados con un archivo XSLT para crear un flujo que a su vez se analiza utilizando el analizador de HTML para crear un modelo de objetos que pueden ser prestados.

A partir de Internet Explorer 9 Platform Preview, XHTML suministradas mediante el uso de XML tipo de contenido puede ser analizada directamente en la misma manera como los otros navegadores modernos.

Cuando sus analizadores XML detectar que sus archivos de entrada no son XML bien formado, algunos de los navegadores mostrará un mensaje de error, y otros, muestran que la página de como se ha construido hasta el punto donde se detectó el error y algunos de ellos ofrecen al usuario la oportunidad de tener el archivo de re-analiza mediante su analizador de HTML.

Validadores y Definiciones de Tipo de Documento

HTML y XHTML archivos puede comenzar con una Definición de Tipo de Documento (DTD) declaración en la que se indica el idioma y la serialización de que está siendo utilizado en el documento. Validadores, tales como el de http://validator.w3.org/ el uso de esta información para que coincida con el idioma y la serialización utilizado en el archivo en contra de las reglas definidas en el DTD. A continuación, informa de errores basado en donde las reglas del DTD son violados por marcar en el archivo.

No todo el HTML de la serialización y las reglas del idioma puede ser descrito en un DTD, por lo que los validadores de prueba sólo para un subconjunto de todas las reglas descritas en las especificaciones.

HTML 4.01 y XHTML 1.0 definir Strict, Transitional y Frameset Dtd que difieren en el lenguaje de los elementos y atributos que están permitidos en los archivos compatibles.

Validadores basado en HTML5 como validador.nu se comportan más como los navegadores, el procesamiento de la página de acuerdo con el tipo de contenido HTTP y usando una DTD basado en la regla para que se captura de los errores que no pueden ser descritas por la Dtd.

Peculiaridades, Limitada Peculiaridades, Normas y modos.

Los navegadores no validar los archivos que se envían a ellos. Tampoco se utiliza ningún DTD declaración para determinar el idioma o la serialización del archivo. Sin embargo, hacen uso de ella para adivinar la época en que la página fue creada, y por lo tanto la probabilidad de análisis y representación de comportamiento que el autor habría esperado de un navegador en ese momento. En consecuencia, se definen tres de análisis y modos de representación, conocido como Peculiaridades modo, Limitada Peculiaridades (o Casi Normas) el modo y el modo estándar.

Cualquier archivo servido mediante un XML tipo de contenido se procesa siempre en modo estándar. Para los archivos analizados utilizando el analizador de HTML, si no hay una DTD o el DTD está decidido a ser muy antiguo, en los exploradores de sus peculiaridades modo. En términos generales, HTML 4.01 y XHTML archivos procesados como text/html serán tratados con la limitada peculiaridades de la modalidad de si contienen una transición DTD y con las normas de modo que si el uso de una estricta DTD.

Donde el DTD no es reconocido, el modo está determinado por un complejo conjunto de reglas. Un caso especial es cuando el público y los identificadores de sistema se omite y la declaración es simplemente <!DOCTYPE html>. Esto es conocido por ser el más corto de la declaración doctype donde actuales de los navegadores de tratar el archivo como normas modo. Por esa razón, es la declaración prevista para ser utilizada en HTML5 compatible con los archivos.

3voto

deceze Puntos 200115

XHTML

QA

XHTML tiene maduro QA herramientas, pero más flojo Dtd (por ejemplo <textarea rows="" es un error de conformidad en HTML 4.01 y XHTML 1.0, pero sólo un error de validez en HTML 4.01*). Esto es a pesar de XHTML 1.0 ser, teóricamente, HTML 4.01 expresado como XML. Hay numerosas diferencias, que no están documentados en el "Diferencias con HTML 4" sección de la especificación.

Un documento XHTML cuando se sirve con un tipo MIME application/xhtml+xml (ver más abajo) tiene que cumplir al 100% con los estándares XML, es decir, que tiene que ser "XML bien formado". Incluso una sola sin escape y comercial puede causar el analizador (el navegador) para lanzar una advertencia y se niegan a hacer el documento. Cuando la creación de dinámicas XHTML sitios que puedan incluir los contenidos aportados por terceras partes (por ejemplo, cualquier usuario de entrada), el gran cuidado debe ser tomado para escapar de cualquier y todos válidos secuencias de caracteres, para no permitir inválida etiquetas o atributos y correctamente nido de todos los elementos.

Compatibilidad Del Navegador

  • XHTML como text/html es bien apoyado, pero usted tiene que saltar a través de la compatibilidad de aros. Sin saltando a través de los aros de forma perfectamente válida de la página puede no representar (por ejemplo <script type="text/javascript" src="foo" /> provocando que el resto de los documentos a ser tratados como una secuencia de comandos en lugar de HTML) o mostrar otras cuestiones.
  • XHTML como application/xhtml+xml está razonablemente bien apoyado por la mayoría de los navegadores (errores menores puedan existir). No funciona en Internet Explorer <= 8.

Tipo MIME application/xhtml+xml vs texto/html

XHTML servido como text/html es ni XHTML ni HTML. Es manejado como HTML en el navegador, pero ya que no es HTML, es tratado como una sopa de etiquetas. Debido a que Internet Explorer no sabe cómo manejar XHTML mediante el uso de application/xhtml+xml, que deberá ser servida como text/html para solo para IE. Lo que significa XHTML para IE, siempre sopa de etiqueta, a menos que las diferencias entre HTML y XHTML son atendidos (ver Diferencias con HTML 4).

Bienvenido a un mundo de dolor. Usted obtener aguas abajo problemas de proxy (usted tiene que variar el almacenamiento en caché basado en lo que el encabezado de la solicitud de llevar a cabo sus condicional). La estructura del documento los cambios (por ejemplo, las tablas sin necesidad de <tbody> etiqueta puede o no puede tener un <tbody> elemento dependiendo del tipo de contenido). Es un montón de trabajo para producir, esencialmente, dos casi idénticos documentos.

XHTML y Javascript

Cuando un documento XHTML es analizado con una adecuada application/xhtml+xml tipo MIME, puede haber diferencias en la manipulación de elementos del DOM mediante Javascript. Algunos scripts que no se han preparado adecuadamente puede funcionar de manera diferente o fallar en XHTML medio ambiente. **

Ventajas de la utilización de XHTML (como application/xhtml+xml)

  • Permite directo de la intercalación de otros formatos XML como MathML y SVG.
  • Teóricamente es más rápido para analizar. La diferencia es insignificante en la práctica, sin embargo.

* Párrafo necesita pulirse un poco más.
** He visto esto en la práctica, pero tienen poco conocimiento de fondo, por favor, expanda.

2voto

Quentin Puntos 325526

HTML

QA

  • HTML5 todavía tiene bastante inmadura herramientas de QA
  • HTML 4 ha sido alrededor de un largo tiempo y tiene muy maduro herramientas de QA

Compatibilidad Del Navegador

  • HTML 5 - partes y piezas son apoyados por los diferentes navegadores. Usted necesita tener Javascript para apoyar la mayoría de las cosas, elementos estructurales básicos (como <section>) caen muy mal si el Javascript no está disponible. *
  • HTML 4 es bien soportado

* Algunas aclaraciones y ejemplos.

1voto

scunliffe Puntos 30964

Estricta frente de Transición vs Marcos

Por qué?

HTML así como XHTML viene en diferentes sabores, es decir, Strict, Transitional y Frameset. Cada "dialecto" especifica un conjunto de diferentes elementos que pueden ser utilizados.

Saltando en la parte más profunda con Strict límites de algunas de sus opciones fuera de la caja (por ejemplo, no ser capaz de especificar target atributos) que hacen que sea un no-go para muchos.

Principales Diferencias

Por favor ampliar

-5voto

Paul D. Waite Puntos 35456

Realmente no es muy complejo, y realmente no importa mucho.

  • HTML y XHTML se diferencian sólo en la sintaxis.
  • Usted no puede servir a XHTML XML para Internet Explorer, y no se obtienen beneficios en otros navegadores por hacerlo.

¿Qué más necesitas saber?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X