doctypes & MIME-types

Me entero leyendo JavasScript & CSS Development with jQuery, que si usamos el doctype XHTML 1 Transitional XHTML 1.1 deberiamos declarar bien el tipo de archivo que se va a servir , en este caso application/xhtml+xml según recomienda la W3C.

Si hacemos esto tenemos varios problemas:

  1. Debemos ser muy disciplinados creando el marcado y mas aún si el site es dinámico, a la hora de interpretarse el documento como xml, un simple elemento mal cerrado hará que nuestro site no se pueda ver o que se vea el tipico error de XML mal formado.
  2. No todos los dispositivos interpretan el mime-type application/xhtml+xml, con lo que el dispositivo no entenderá el tipo de archivo que se le esta mandando y no lo interpretará

Por curiosidad me meto en la W3C y la verdad me resulto algo confuso, en algunos casos te dicen que DEBES poner un mime type y en otros casos que PUEDES. Con lo que decido seguir buscando y me encuentro con esta tabla de compatibilidades doctype/mime-type.

Soluciones que veo:

  1. Servir todo como text/html  , que según la W3C no es lo mas recomendable pero funciona.
  2. Detectar cuando se va a servir la pagina si el el dispositivo desde el que se solicita soporta archivos del tipo application/xhtml+xml y sino es asi cambiar el doctype por XHTML 1.0 Strict y el mime-type por text/html. Cuidado con esto porque puede causar problemas.  Aqui puedes ver las diferencias entre XHTML 1.0 Strict y Transitional.

Gracias a @richmanblues por la correción.

This entry was posted in XHTML. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

One Comment

  1. richmanblues
    Posted October 22, 2009 at 11:24 pm | Permalink

    Hola!

    Sé que llego tarde, pero acabo de descubrir tu blog xD

    Me ha molado el post. Un detallito te falta nada más: El problema no está en la diferencia strict/transitional sino que está en XHTML 1.1; XHTML 1.0 puede ser servido como text/html, pero XHTML1.1 no, only xml.

    Y nada más :)

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>