En 2004,el consorcio Web Hypertext Application Technology Working Group (WHATWG- integrado entre otros por Opera, Mozilla y Apple) planteó siete requisitos que debería cumplir el nuevo lenguaje:
Compatibilidad hacia atrás y un camino claro para migrar desde construcciones anteriores.
Definición clara del amnejo de errores, tal y como hace el CSS (ignorar lo que no puede parsear y seguir con lo que sí puede) en lugar de la intransigencia del XML.
Los errores de de la aplicación deben ser transparentes al usuario.
Usos prácticos: cada prestación de las especificaciones para aplicaciones web debe responder y estar justificada por un caso de uso práctico. La inversa no es necesariamente cierta: cada caso de uso no implica necesariamente la especificación de una nueva presatción.
Seguriemos escribiendo scripts, pero deben evitarse siempre que el problema pueda resolverse mediante marcado declarativo.
Evitar especificaciones dependientes de un dispositivo concreto
El proceso de especificación debe de ser abierto. (La Web siempre se ha benficiado de los desarrollos abiertos. Listas de correo, ficheros y bocetos de especificación deben estar permanentemente a disposición pública)
En 2006 el W3C abandonaba el proyecto XHTML2 y adoptaba el proyecto del WHATWG
Ahora sólo queda esperar a que IE6 se jubile defitivamente e IE9 de soporte, y que AUDIO y VIDEO funcionen en Safari para Windows, y que ...
La buena noticia es que el W3C separa la especifición para autoría de contenidos de la especificación para implementación de browser.
La mala es que la edición para autores es tan pobre que no queda otro remedioque seguir utilizando la especificación completa en multitud de casos (todos para estar seguros de lo que consultamos).
Es una sintaxis mucho más relajada que la impuesta por el XHTML y permite tanto mayúsculas como minúsculas como combinaciones de ambas en nombres de etiqueta y de atributo.
permite parametrizar los atributos sin comillas, siempre que el valor del atributo no contenga espacios, " ' ` = < ó >.
Los siguientes ejemplos son igualmente válidos:
<img src="nice.jpg" />
<img src="nice.jpg">
<img src="nice.jpg">
<img src=nice.jpg>
<IMG SRC=nice.jpg>
<img src=nice.jpg>
<iMg SrC=nice.jpg>
A pesar de esta discrecionalidad, la especificación describe claramente qué debe hacer un parser con el código mal escrito, por lo que todos los browser generan el mismo DOM.
El XHTML actual corresponde a una especificación completa y funcionará correctamente en los browsers html5 compatibles.
La variante que incorpora las características funcionales del html5 pero con con una sintaxis estricta de XML es el XHTML5.
Doctype
<!DOCTYPE html>
Por fin podremos escribirlo de memoria sin tener que copiarlo de un documento a otro.
aunque echaremos de menos aquellos chorizacos ...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
estos métodos aprovechan toda la potencia de los selectores
CSS. Por ejemplo:
querySelector(“input.error”)
devuelve el primer los input con atrributo class=”error”,
mientras que
querySelectorAll(“input.error”)
devuelve todos los elementos que cumplen la condición.
También podemos utilizar estos
métodos para buscar elementos que cumplan alguna de una lista
de condiciones mediante una sucesión de selectores separada
por comas:
querySelector(“.error,.alert,.advise”)
devolverá el primer elemento que cumpla una de las tres
condiciones.
Esto supone una ventaja frente a las
búsquedas trasversales en el DOM ya que los browser suelen
estar optimizados para encontrar selectores para conseguir un
rendimiento más rápido en la aplicación de hojas
de estilo.
Entre otros muchos, se han deprecado todos los elementos para dar formato inline, también los FRAME y FRAMESET, cuyas funcionalidades ahora recoge IFRAME
Paralelamente, se han incorporado nuevos elementos con nuevas funcionalidades o que complementan y amplían las de elementos ya existentes.
En HTML5 los elementos se agrupan con una nueva clasificación que sustituye a la clásica de elementos inline y de bloque. Cada elemento puede pertenecer a uno o a varios apartados de la nueva categorización.
Tal y como se hacía en HTML4, los elementos de tipo metadata establecen parámetros de presentación, comportamiento y relación del documento con relación a otros documentos y con su contexto.
Una novedad importante. Los elementos Sectioning permiten una categorización semántica del contenido y estructurar todo lo que se encuentra entre el encabezado y el pie del documento. vienen a reemplazar a los div con clases para marcar las distintas zonas de un documento (menú de navegación, contenido, secciones, artículos, ...)
Los elementos Heading titulan y jerarquizan las secciones de contenido (tanto si están marcaddas explícitamente por elementos de tipo sectioning, como si se trata de secciones implícitas en el contenido del propio heading).Más o menos igual que en HTML4.
Los elementos de tipo phrasing son todos aquellos que componen el texto de un documento, incluídos los que marcan el texto dentro de cada párrafo (antes contenido in-line). Los elementos de tipo phrasing generan el contenido de párrafos.
Interactive content is content that is specifically intended for user interaction.
Como el nombre indica, los elementos de tipo interactive están pensados para la interacción con el usuario.
La lista completa de elementos presentada por w3Schools indica claramente cuáles son nuevos en HTML5 respecto a HTML4 y XHTML: W3Schools HTML5 New Elements