≡En resumen
- XHTML es HTML escrito con las reglas estrictas de XML.
- XHTML 1.0 se publicó el 26 de enero de 2000 y tuvo tres variantes: Strict, Transitional y Frameset.
- El W3C abandonó XHTML 2.0 en 2009 para centrarse en HTML5.
- Desde 2018 el W3C considera XHTML 1.0 y 1.1 especificaciones superadas.
- La sintaxis XML de HTML (antes XHTML5) sigue existiendo y la usan los libros EPUB.
01 ¿Qué es XHTML?
El nombre significa Extensible HyperText Markup Language. El W3C lo publicó como Recomendación el 26 de enero de 2000 con una idea ambiciosa: acercar la web a XML para que las páginas pudieran mezclarse con otros vocabularios XML (SVG, MathML) y leerse con analizadores más simples y estrictos que los de los navegadores.
02 Versiones de XHTML: de XHTML 1.0 a XHTML5
| Versión | Fecha | Qué aportó |
|---|---|---|
| XHTML 1.0 | 26 de enero de 2000 (2.ª edición, 1 de agosto de 2002) | HTML 4 reformulado en XML, con tres DTD: Strict, Transitional y Frameset |
| XHTML 1.1 | 31 de mayo de 2001 | Versión modular basada en XHTML 1.0 Strict, sin elementos de presentación |
| XHTML 2.0 | Borrador abandonado | Rompía la compatibilidad con HTML; el W3C anunció el 2 de julio de 2009 que su grupo de trabajo cerraría a finales de ese año |
| XHTML5 / sintaxis XML de HTML | Dentro de HTML5 y del HTML Living Standard | La misma semántica de HTML5 escrita con sintaxis XML |
| Estado actual | 27 de marzo de 2018 | XHTML 1.0 y 1.1 pasan a Recomendaciones superadas |
03 Reglas de XHTML: cómo se escribe
- ✓El documento debe estar bien formado: todos los elementos se cierran y se anidan correctamente.
- ✓Nombres de elementos y atributos en minúsculas.
- ✓Todos los valores de atributo entre comillas, incluidos los numéricos.
- ✓Sin minimización de atributos: checked="checked" en lugar de checked.
- ✓Elementos vacíos cerrados con barra final: br, img o hr se escriben como «br /», «img … /» y «hr /».
- ✓Declaración del espacio de nombres http://www.w3.org/1999/xhtml en el elemento html.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head><title>Mi página</title></head><body><p>Hola<br />mundo</p></body></html>
En HTML5 bastaría con <!DOCTYPE html> y las etiquetas podrían quedar sin cerrar sin que el navegador protestara.
04 XHTML vs HTML5: diferencias
| Aspecto | XHTML 1.0 | HTML5 (sintaxis HTML) |
|---|---|---|
| Base | XML | Su propia sintaxis, definida por el estándar HTML |
| Doctype | Largo, con referencia a una DTD | <!DOCTYPE html> |
| Errores | Con application/xhtml+xml, un error de XML impide mostrar la página | El navegador corrige y muestra la página según un algoritmo común |
| Mayúsculas | Obligatorio en minúsculas | Indiferente |
| Cierre de etiquetas | Obligatorio | Opcional en muchos elementos |
| Elementos semánticos | No existen header, nav, article, video… | Sí, además de APIs como audio, vídeo o canvas |
| Estado | Superado (2018) | Estándar vivo del WHATWG |
En la práctica, un código «estilo XHTML» (minúsculas, comillas, etiquetas cerradas) sigue siendo HTML5 válido, por eso muchos desarrolladores conservan esos hábitos. Lo que cambia es cómo se sirve y se interpreta el documento. Para las bases del lenguaje actual, consulta nuestras etiquetas HTML.
05 Por qué XHTML perdió frente a HTML5
Casi nadie lo servía como XML
La mayoría de webs XHTML se enviaban como text/html, así que los navegadores las leían como HTML normal y la ventaja de XML no existía.
Errores fatales
Servido como application/xhtml+xml, un solo error de marcado hacía que el navegador mostrara un error en vez de la página.
XHTML 2.0 rompía la web
No era compatible con el HTML existente. Los fabricantes de navegadores prefirieron el trabajo del WHATWG, y el W3C cerró XHTML 2 en 2009.
HTML5 resolvió lo importante
Definió cómo tratar el código incorrecto, añadió elementos semánticos y multimedia y se convirtió en Recomendación del W3C en 2014.
06 ¿Dónde se usa XHTML hoy?
- ✓Libros electrónicos: los documentos de contenido de EPUB 3.3 son XHTML y usan la sintaxis XML de HTML.
- ✓Webs y CMS antiguos que aún declaran un doctype XHTML 1.0 Transitional o Strict.
- ✓Sistemas que generan o transforman páginas con herramientas XML como XSLT o XPath.
- ✓Documentos que mezclan HTML con otros vocabularios XML, como SVG o MathML.
Si trabajas con documentos XHTML de forma automática, te interesará XPath, el lenguaje para seleccionar nodos de un documento XML. Y si tu web lleva años con un marcado heredado de esa época, quizá sea el momento de un diseño web profesional sobre HTML5 y CSS modernos.
07 XHTML en el desarrollo de aplicaciones web actuales
En un proyecto nuevo no tiene sentido elegir XHTML: los frameworks de interfaz generan HTML5 y los navegadores siguen el estándar vivo del WHATWG. Donde sí aparece es al integrar sistemas antiguos, exportar contenidos a EPUB o procesar documentos con herramientas XML. En nuestros proyectos de desarrollo de aplicaciones web a medida tratamos ese marcado heredado como un formato de entrada más y servimos al usuario HTML5.
Preguntas frecuentes sobre XHTML
XHTML significa Extensible HyperText Markup Language: es HTML reformulado con las reglas de XML.
XHTML exige un marcado bien formado (etiquetas cerradas, minúsculas, atributos entre comillas) y puede procesarse como XML, mientras que HTML tolera errores y el navegador los corrige.
Poco. El W3C lo considera superado desde 2018 y la web usa HTML5, pero su sintaxis XML sigue presente en los libros EPUB y en sistemas antiguos.
XHTML 1.0 se publicó como Recomendación del W3C el 26 de enero de 2000, y XHTML 1.1 el 31 de mayo de 2001.
Es el nombre que se daba a la sintaxis XML de HTML5. El estándar actual ya no usa el término XHTML y desaconseja esa sintaxis para la web.
Ninguno aporta ventaja por sí mismo, pero HTML5 ofrece elementos semánticos y es el estándar actual, así que es la opción recomendada.
Cambia el doctype por <!DOCTYPE html>, sirve la página como text/html, sustituye los divs genéricos por elementos semánticos como header, nav o article cuando tenga sentido y valida el resultado. El resto del marcado XHTML bien escrito ya es HTML5 válido.
Fuentes consultadas
Sobre el autor
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil y artículos → Ver perfil en LinkedIn ↗