XHTML no es para principiantes
Acabo de leer en Ovillo un enlace, que proporciona Manuel de Simplelógica, a un artículo llamado XHTML is not for Beginners, y que traduzco, lo mejor que puedo, a petición de algún usuario de la lista:
En todos los casos, estos principiantes se enfrentan a la eterna pregunta de si usar HTML o XHTML; y hoy, tengo intención de contestar a ello (dirigiendome a principiantes) una vez y para todos. Para usuarios experimentados, la respuesta puede ser diferente, esto sólo sirve para principiantes y para aquellos de nosotros que enseñamos.
Particularmente, no quiero replantear el debate entre HTML vs XHTML, ni tampoco repetir que XHTML servido como text/html es extremadamente perjudicial; pero debo hacer hincapie en que tanto HTML como XHTML tienen sus aplicaciones y es importante usar la herramienta correcta para cada trabajo. Pero para principiantes se necesita dar una respuesta clara y tener un modo de aprendizaje conciso, y todos aquellos de nosotros que enseñamos debemos estar unidos en este punto. Si los principiantes escuchan respuestas diferentes de diferentes sitios, acabarán pasándose al lado oscuro de la fuerza para siempre.
Déjame comenzar diciendo que XHTML no es para principiantes. Debemos empezar con HTML y tener claro un modo de aprendizaje hasta llegar al futuro con XHTML. Se ha discutido que, desde que se dice que el futuro es XHTML (aunque eso aún hay que verlo), deberíamos estar enseñando XHTML desde ya. Eso suena bonito en teoría, pero la realidad es que estamos enseñándolo desde un entorno servido en text/html, y el hecho es que: enseñando XHTML bajo condiciones HTML (sólo la sopa de tags, el vocabulario) es como tratar de enseñar a un niño a nadar tirándolo a las profundidades y no darse cuenta de que se está ahogando hasta que es demasiado tarde. Cuando se llega al XHTML: hay demasiado que aprender para un principiante, sin mencionar puntos significativos de soporte por navegadores, de los cuales deberíamos aceptar simplemente que no están preparados, y por eso debemos enseñar HTML.
XHTML no es simplemente HTML 4 con sintáxis XML, todos los requisitos para manejar XML también vienen en el paquete, con unas grandes pegatinas "Frágil" y "Manipúlese con cuidado" pegadas en la caja. A pesar de todos los mitos alrededor del uso de XHTML como text/html y de lo fácil que es cambiar luego a XHTML cuando los navegadores mejoren su soporte, hay evidencias significativas que demuestran que el desarrollo XHTML en text/html no sobrevivirá a la transición a XML.
El menor número de tags que hay en XHTML es el motivo evidente para promoverlo entre los recién llegados mientras que se dejan de lado aspectos importantes, muchos de los cuales no entenderán, pero que actualmente necesitan aprender antes de usarlos. No entraré en detalles aquí, pero estos aspectos del XHTML incluyen, entre otros, los siguientes; y garantizo que si preguntas a un principiante (que aprendió XHTML bajo condiciones HTML), te mirará pálido, sin tener la menor idea de lo que estás hablando.
Aspectos generales de marcado
- Internet Explorer 7 y versiones anteriores no soportan XHTML en absoluto, ni incluso soporte limitado. Cualquiera que diga lo contrario es un ignorante o miente. (Se espera que IE 8 lo soporte finalmente)
- Los errores de formado (well-formed) son fatales.
- El namespace (atributo xmlns) debe ser declarado en el elemento raíz, a pesar de que el validador no muestre error si es omitido.
- El uso de entidades puede ser fatal para analizadores (parsers) que no validan (excepto amp, lt, gt, quot, y apos)
- Hay que usar xml:lang en lugar de lang
- El significado de la sintáxis del elemento vacío de XML tiene un significado diferente en SGML y HTML, aunque los navegadores no lo soportan.
- Los DTDs no sopotan muy bien la validación de documentos con namespace mezclados.
- Cuando es servido como XML, el DOCTYPE no es requerido para cambiar a modo estándar en los navegadores.
- La declaración XML cambia a modo quirksmode en IE6 cuando es servido como text/html, debería ser omitido en estos casos (pero mira los siguientes puntos)
MIME y codificación
- El MIME debe se declarado apropiadamente en la cabecera HTTP (application/xhtml+xml (preferentemente), application/xml (aceptable) o text/xml (no recomendado)
- La codificación debería declararse dentro de la declaración XML, mejor que en la cabecera HTTP, ya que XML es un formato que se describe a sí mismo. (Por eso no es aplicable text/xml)
- Para text/xml se debe usar US-ASCII a no ser que se especifique a nivel de protocolo.
- Cuando se omite la declaración XML, se debe usar UTF-8 o UTF-16, a no ser que se especifique otro en un nivel de protocolo mayor.
- El elemento meta es inútil para especificar la codificación de caracteres y el tipo MIME.
Scripts y Hojas de Estilo
- Script y elementos de estilo se analizan (parsean) de forma diferente. La típica sintáxis de comentarios dentro de elementos de script y estilo no han de usarse con el propósito de esconder código a navegadores obsoletos.
- document.write() y document.writeln() no funcionan.
- innerHTML (propiedad no estándar) no es soportado por algunos agentes de usuario XHTML
- DOM requiere el uso de métodos con namespace donde sea aplicable.
- Los nombres de elementos y atributos de los métodos DOM son sensibles a mayúsculas (han de ir en minúsculas), comparado con HTML que van en mayúsculas.
- Las reglas XML para hojas de estilo CSS son aplicadas y se diferencian sustancialmente de las de HTML. Ejemplo: No hay tratamiento especial para el elemento body.
- La sensibilidad a mayúsculas de los selectores CSS depende del lenguaje de marcado, y por eso son sensibles a mayúsculas en XHTML.
Estoy bastante seguro que la lista de diferencias entre HTML y XHTML no está completa, pero cada na de ellas (más alguna que he olvidado) necesita ser aprendida por alguien que aprende XHTML en serio.
La gran mayoría de ellas no son aplicables, o no funcionan bien, bajo condiciones HTML. Luego, a causa de esto, por el hecho de que la mayoría de principiantes apenderán bajo entorno HTML, XHTML es peligroso para los principiantes. Enseñando XHTML a principiantes, sólo estamos realmente enseñando un nuevo vocabulario (sopa de marcas) bajo el lema "desarrollo basado en estándares" y se eso está haciendo más daño que bien.
Los usuarios experimentados que son bastante competentes para entender estos puntos y realizar una decisión con conocimiento acerca de cuando usar HTML o XHTML pueden hacerlo, pero no podemos esperar lo mismo de los principiantes. Así que, déjame repetir que debemos unirnos en este punto y animar a los principiantes a empezar con HTML, no con XHTML.
Después de mis discusiones con Manuel el año pasado, mis investigaciones, y después de leer este artículo, creo que tiene razón. No creo que sea bueno utilizar XHTML hasta que los navegadores estén preparados para ello. Si no conoces estos problemas, seguro que estás haciendo las cosas mal; si los conoces, sabes que te vas a complicar la vida; y si te la complicas, realmente, no vas a obtener grandes ventajas de usar XHTML servido como HTML.
En fin, espero haber traducido decentemente. Si alguien ve un error, que me lo diga.



Pablo Viojo dijo
Muy interesante el artículo, deja bastantes cosas para tomar en consideración.
14 Diciembre 2005 | 08:01