Publicidad:
La Coctelera

Garbage In, Garbage Out

Diseño web, tecnología, e internet.

14 Diciembre 2005

XHTML no es para principiantes

HTML vs XHTMLAcabo 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:

Como defensores de los estándares web, muchos de nosotros participamos en numerosas comunidades online como listas de correo, foros, grupos de noticias, e incluso blogs (nuestros y en comentarios de los demás). En estas comunidades nos encontramos con principiantes que, o bien están empezando con HTML, o han estado haciendo HTML durante un tiempo y quieren iniciarse en el desarrollo con estándares.

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.

servido por gigo 16 comentarios compártelo

16 comentarios · Escribe aquí tu comentario

Pablo Viojo

Pablo Viojo dijo

Muy interesante el artículo, deja bastantes cosas para tomar en consideración.

14 Diciembre 2005 | 08:01

mort

mort dijo

Dios mio, lo has traducido en el tiempo que yo he tardado en empezar a planificar un momento libre para hacerlo O:-) Muchas gracias por el esfuerzo y por ahorrarme a mi el trabajo

14 Diciembre 2005 | 08:22

gigo

gigo dijo

No hay de qué, mort. [guiño]

14 Diciembre 2005 | 09:50

El profesor

El profesor dijo

XHTML es mucho mas lógico y coherente que HTML y en consecuencia mejor para aprender buenas practicas.

HTML es un cajón desastre en el que por muy mal que hagas las cosas, seguirán funcionando y tu seguirás haciendolas mal toda la vida.

14 Diciembre 2005 | 10:46

Pablo Viojo

Pablo Viojo dijo

Es cierto, y esa es la ventaja, desde el punto de vista de quien lo comienza a aprender, y desventaja, si se hace mala costumbre.
Creo que si se enseña HTML pero insistiendo en el cumplimiento del estandar se estaría transitando por un buen camino en ese sentido y abriendo la posibilidad de que el "principiante" al ir evolucionando tienda a pasarse al XHTML

15 Diciembre 2005 | 01:23

gigo

gigo dijo

Profesor, eso que dices es exactamente lo que dice el artículo: sólo te estás fijando en "la sopa de tags". El artículo hace hincapié en que no solo se trata de saber tags, sino de tener en cuenta otros puntos clave que conlleva el uso de XML, en concreto XHTML, que poca gente conoce y que sin conocerlos de poco sirve usarlo.

Las ventajas de XHTML sólo se obtienen si es servidor como XHTML (application/xhtml+xml). XHTML servidor como text/html también es un cajón desastre porque trata el lenguaje como si fuera HTML y el navegador no te informa de tus errores. Es decir, puedes estar cometiendo tantos errores como con HTML que no te vas a enterar. Tanto si usas HTML como si usas XHTML tienes que recurrir a validadores como el de la W3C. Así que ¿qué ventajas obtienes? Ninguna, salvo complicarte la vida en asegurar compatibilidades con la gran mayoría de navegadores que no lo soportan aún.

La verdad es que no encuentro mucha utilidad hoy en día al XHTML hasta que las próximas generaciones de navegadores lo soporten y estén instalados en un amplio número de computadoras.

15 Diciembre 2005 | 08:42

El profesor

El profesor dijo

Si usas XHTML y la sintesis es incorrecta es el propio navegador el que te lo dice dandote un error.

Con lo que entre otras ventajas, al mostrarte el contenido solo si es como debe, hacer navegadores es mucho más sencillo y hacer paginas web también. Está bien o no está y no hay más.

21 Diciembre 2005 | 12:23

El profesor

El profesor dijo

«Así que ¿qué ventajas obtienes? Ninguna, salvo complicarte la vida en asegurar compatibilidades con la gran mayoría de navegadores que no lo soportan aún.»

¿No querrás decir Internet Explorer?
Es el único «de lo grandes» que no lo soporta

21 Diciembre 2005 | 12:26

gigo

gigo dijo

Me parece muy bien. Pero "el único de los grandes" lo utiliza casi todo el mundo en sus diferentes versiones, te guste o no, y no puedes ignorarles.

Yo también pienso lo mismo que tú acerca de XHTML, pero hoy día, mientras se use masivamente un navegador que no lo soporte ¿qué vas a hacer?

Además, nos desviamos del tema. El artículo no habla de eso. Habla de que la gente no tiene en cuenta otros aspectos del XHTML que son importantes para que tenga sentido su utilización por parte de principiantes.

En fin, esta es mi opinión.

21 Diciembre 2005 | 09:05

ldp

ldp dijo

estoy de acuerdo con el profesor, es mucho mas simple entender/comprender/aprender el codigo en xhtml que en html, sobretodo si uno empieza a escribir html con tantos tags extinguidos..

1 Enero 2006 | 04:43

ldp

ldp dijo

o extintos :S
(perdon por mi ignoracia ;P)

1 Enero 2006 | 04:44

gigo

gigo dijo

Los tags están igual de extintos en HTML como XHTML estricto. No tiene nada que ver con eso. Nada que ver con tags. Tiene que ver con las demás consecuencias. Creo que eso está bien claro en el artículo, ¿no?

1 Enero 2006 | 07:48

tresonce

tresonce dijo

Gracias por traducir el artículo, ya le echaré un vistazo, de momento lo meto en marcadores. ;)
Saludos.

4 Enero 2006 | 03:38

E p

E p dijo

¿Y quien habla de XHTML 1.0 estricto? Por favor gigo a ver si cambiamos de siglo y hablamos de lo que hay que hablar: XHTML 1.1

31 Enero 2006 | 11:40

gigo

gigo dijo

Viva el radicalismo y el irse por las ramas.

1 Febrero 2006 | 11:03

Zajha

Zajha dijo

Deja mucho que pensar para donde va la micro, dado que son los mismos temas de cuando empezo la era XML - XSLT.

Bueno, a investigar, pero deja claro la novedad versus la prudencia al momento de definir porque lenguaje seguir la evolución. Si es que hay evolución de lenguajes. Dados las limitantes técnicas.

Saludos, Zajha.

3 Agosto 2006 | 04:07

Escribe tu comentario


Sobre mí

Avatar de gigo

Garbage In, Garbage Out

ver perfil »
contacto »
Desarrollador web con ganas de aprender y enseñar, porque aún queda mucho por aprender y por enseñar. Uso esta bitácora para hacer mis apuntes profesionales y de paso contribuir a ayudar a mis compañeros de, ésta, mi profesión. [guiño]

Sindicación

Fotos

gigo todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera