Niquelao

Ocultar la declaración xml a Internet Explorer 14 de junio de 2006, por Maroto

Para que nuestros documentos web sean XHTML del bueno, deberían tener la declaración <?xml?> al comienzo del documento. Ya nos comentaba Zeldman en Designing with Web Standards que esta característica nos iba a dar dolores de cabeza en algunos navegadores.

Por todos es conocido que Internet Explorer (6 y anteriores) no soporta XHTML en absoluto y que en el momento en que encuentra algo diferente a la declaración de tipo de documento (DOCTYPE) entra en modo quirks, es decir, cuando encuentra la declaración <?xml?> en la primera línea del documento suceden cosas raras.

Haciendo uso de los famosos comentarios condicionales de Internet Explorer (IE) vamos permitir que aparezca la declaración <?xml?> en nuestros documentos XHTML en aquellos navegadores que soportan este tipo de ficheros.

Problemas conocidos

Por ejemplo, queremos tener todas las páginas de nuestro sitio centradas, con cierto espacio por los lados. Ya sabemos que con Firefox (FF) bastaría con aplicar al bloque contenedor la siguiente declaración en la hoja de estilo CSS:

	#contenedor {
	   margin: 0 auto;
	   width: 65%;
	}

Sin embargo en nuestro amigo IE6 deberíamos añadirle algo como esto:

	body {
	   text-align: center;
	}

Todo esto se debe a lo que comentabamos anteriormente, IE entra en modo quirks y empieza a dar problemas. Sin embargo, si a IE le proporcionamos una declaración de tipo de documento correcta actuará igual que otros navegadores estándar (al menos en su mayor parte). Hay que tener en cuenta que para IE la declaración de tipo de documento correcta incluye: el identificador público y de sistema adecuados además de no tener nada antes que esta declaración.

¡Aquí es donde la matan!. La declaración <?xml?> siempre debe aparecer en la primera línea.

Buscando soluciones

¿Que podemos hacer?. Está claro que hay otros navegadores que aceptan este tipo de declaración y no todo el mundo tiene acceso a lenguajes del lado del servidor para identificar cuando se trata de uno u otro navegador para enviarle un tipo u otro de cabecera.

La solución nos la ofrece el mismo IE, los famosos comentarios condicionales (muy bien explicados en Diseñorama).

La cosa es sencilla, cuando se trate de IE le indicamos que no lea la línea de comentarios y cuando sea otro los tratará como comentarios. Ahí va el código del delito:

<!--[if !IE]><-->
	<?xml version="1.0" encoding="UTF-8"?>
<!--><![endif]-->

Por cierto, antes de que nadie venga pidiendo la silla eléctrica para el autor del artículo, se recomienda tomar todas las precauciones posibles. La primera de ellas, y casi la única, es fácil: leer.

Por último, recordar que los comentarios condicionales no funcionarán en la versión de IE para Mac.

Ocultar la declaración xml a Internet Explorer

Categoría: (X)HTML

1  comentario

1 comentario

meneame.net 2 de febrero de 2007

HOWTO: Ocultar la declaración xml a Internet Explorer…

Seguramente, muchos programadores web, os habéis encontrado en la situación de que al poner la cabecera xml <?xml version="1.0"?> en vuestra página xhtml, internet explorer hacía cosas raras. Aquí tenéis una solución….

Puedes hacer un seguimiento de los comentarios gracias al feed RSS 2.0. También puedes enviar un trackback desde tu sitio.

¿Algún comentario?

Información Personal

...y si quieres incluir un Gravatar.

Creative Commons License Esta obra está bajo una licencia de Creative Commons.