¿HTML o XHTML?

Versión original del artículo por Robert Nyman (autorizado por él mismo vía e-mail)

Esto parece ser la eterna cuestión entre los desarrolladores web: ¿HTML or XHTML? En muchos lados aparece planteada la pregunta en foros y blogs, los desarrolladores web le preguntan a Robert o a otra gente que escribe sobre este tema: qué es lo que ellos piensan acerca de cuál es la mejor opción a seguir. Robert no escribió este post para decir cuál es la última opción, sino más bien para que nos enteremos cuáles son las consecuencias del camino que elegimos. Entonces, empecemos desde el principio:

¿Estricto o Transicional? (strict | transitional)

Definitivamente estricto. Los doctypes transicionales son exactamente lo que el nombre implica: un tipo de documento para una fase de transición, esto significa que no va a ser usado permanentemente. Si escribís HTML y elegís transitional, obtendrás un rendereo en Quirk Mode (algo asi como "modo caprichoso") de tu HTML, como resultado conseguirás que los browsers tratarán de imitar un comportamiento viejo e incorrecto. Si elegís XHTML Transitional para tu .HTML, el IE interpretará el código del modo más estricto disponible, en cambio obligarás a los browsers basados en Mozilla que lo interpren en modo "Casi Estandar".

En cambio, si usas el doctype strict, obtendrás una interpretación (por parte del browser) correcta, completamente compatible con los estándares, más consistente y más compatible a futuro.

¿Qué es XHTML?

Un documento XHTML es el que está bien armado de acuerdo con las reglas del XML. Todos los tags deben estar cerrados y correctamente jerarquizados, y para los tags como img, input, link, etc, se le debe agregar una barra al final de tag para cerrarlo, como este: <input type="text" />. Si estás escribiendo código que debería ser accesible para la gente que usa Netscape 4 y algunos otros browsers viejos, entonces asegurate de poner un espacio antes de la barra (Nota: este tip no es para que se vea bien en Netscape 4, sino para que por lo menos funcione).

Supuestamente podés guardar una página hecha en XHTML y usarla sin problemas como XML.

¿Porqué XHTML?

Eso depende totalmente de tus necesidades. Alguna gente cree que es muy fácil y consistente escribir el código en esta moda XML, donde todo debe estar bien formado y todos los elementos deben estar cerrados. Otra gente lo elige para extender su funcionalidad con "namespaces", para usarlo en conjunción con MathML. Algunos otros, deben trabajar con XHTML, no por su propia elecci�n, sino porque los productos de su compañía son entregados en XHTML.

¿Escuché algo sobre application/xhtml+XML?

Si, esto es el tipo MIME que va en tu código. Para el HTML, el tipo de media (MIME) es text/html. De acuerdo con el W3C, la organización responsable de recomendaciones como HTML, XHTML, etc. (mejor conocidas como estándares web), aplica en su documentación para los XHTML Media Type:

La application/xhtml+XML DEBERÍA ser usada para los documentos XHTML para aplicar a los agentes de usuario XHTML (XHTML user agents). Los autores que desean que sus archivos soporten ambos “user agents” (HTML y XHTML) DEBEN aplicar a su código el content negotiation (negociación del contenido) para identificar los documentos HTML con txt/html y a los XHTML con application/xhtml+XML. También nota que no es necesario para los documentos XHTML servidos como application/xhtml+XML seguir con las guías de compatibilidad HTML.

Esto significa que los browsers que puedan manejar application/xhtml+XML deberían renderizar la página de esta manera. Sin embargo, IE no soporta este media type, entonces, requiere que le mandes el código como txt/html. Básicamente, debes mandar las páginas con diferentes media types a diferentes browsers, usando algo llamado “Content negotiation” (negociación del contenido). Por ahora, probablemente pienses que todo esto suena mucho como una gran molestia, y decides aplicar directamente el txt/html para todos. Después de todo, el Apéndice C: Guías de Compatibilidad HTML, presenta la validez de renderizar los XHTML como txt/html.

Sin embargo, debes leer esto:

Los documentos XHTML servidos como txt/html no serán procesados como XML [XML1.0], entonces, los errores de armado “bien formado” (well-formed) del XML, no serán detectados por los user agents. También enterate que las reglas del HTML serán aplicadas para el DOM y las hojas de estilo…

Lo que significa que esos browsers no renderizarán tus páginas como XHTML, sino que lo harán como HTML y fallarán al manejarlo y tratarán de adivinar cómo se supone que debe ser. Entoces, muy probablemente, te volverás loco al ver que el comportamiento del documento no es el que buscas.

También, algo más que es completamente importante saber es que ciertos scripts no funcionarán cuando mandas el documento como application/xhtml+XML. Por ejemplo, si usas el document.write o tenés en tu página publicidades provistas por un proveedor de contenidos de publicidad (como Google AdSense), esto dejará de funcionar. Si implentas una aplicaacián AJAX usando la propiedad innerHTML en un elemento, tampoco funcionará.

¿Cuál es la opinión de Robert Nyman (autor del artículo)?

Su opinión es que la cosa más importante es que debes elegir un doctype estricto, sea HTML o XHTML Si querés usar XHTML y servirlo como txt/html, asegurate de que no tienes código que intencionalmente pueda romperse cuando lo presentas como application/xhtml+XML. No uses scripts como los mencionados arriba en una página XHTML y andá un poco más allá para que esté bien formado. Estáte alerta que la página mandada que no está bien formada como application/xhtml+XML no se renderizará para nada, en vez de eso, sólo le mandará al usuario final un mensaje de error.

Entonces, elige lo pienses que va a adecuarse mejor a tus necesidades, y elige prudentemente. Y asegurate de que es una decisión deliberada.

Lectura relacionada (en inglés):

Deja un comentario

Get Firefox!
Miembro de panic|(o)|zoo