¿Chrome, Firefox y Safari no aplican XSLT? ¡IE lo hace!

Lo siguiente se devuelve al navegador:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="to_xhtml.xslt"?>
    <root>
      <value>test data</value>
    </root>

Chrome 7 y FF 5 no aplican XSLT, solo muestran los valores XML. IE aplica el XSLT que muestra el XHTML resultante.

El archivo XSLT está ahí y es válido: puedo procesar el XML localmente y abrir el XHTML resultante en Chrome y Firefox ...

¿El servidor web es IIS 6 y la interfaz es PHP 5.3 si eso tiene algo que ver?

ACTUALIZACIÓN: XSLT:

 ...

preguntado el 22 de noviembre de 10 a las 05:11

1. ¿Con qué tipo de contenido se sirve el archivo inicial? 2. Muestre el xslt. -

@meder 1. El valor predeterminado devuelto por php: text / html (de los encabezados HTTP en vivo), ¿supongo que debería ser text / xml? 2. Parte superior de XSLT arriba. -

has probado con method='html' -

2 Respuestas

Debe asegurarse de que su página se sirva con el HTTP correcto Content-Type valor del encabezado en este caso: texto / xml, posible en PHP usando la función de encabezado:

header('Content-type: text/xml');
echo $xmlStr;

* gracias a meder que me guió en la dirección correcta para esto.

También En Chrome y Safari, se sigue produciendo un error al aplicar XSLT debido al valor doctype-public anterior:

<xsl:output 
method='xml' 
indent='yes'
doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/>;

Debería ser:

<xsl:output 
  method="xml"
  indent="yes"
  doctype-public="-//W3C//DTD XHTML Basic 1.1//EN"
  doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"/>

El atributo doctype-public ni siquiera debe ser examinado si doctype-system no se especifica de acuerdo con el especulación.

* gracias a LarsH por señalar que doctype-system debería estar en un valor separado.

respondido 22 nov., 10:15

respuesta útil, +1. Vea también mi respuesta con respecto a una corrección por el valor de doctype-public. - LarsH

En cuanto a doctype-public atributo: Según el especulación,

El atributo doctype-public debe ignorarse a menos que se especifique el atributo doctype-system.

Así que hay algo bastante sospechoso en tu <xsl:output-method> elemento, que tiene un atributo doctype-public pero no doctype-system. (Eso no excusa a Chrome y Safari de "caerse" ... = ¿bloquearse?)

Tal vez tu querias

<xsl:output 
  method="xml"
  indent="yes"
  doctype-public="-//W3C//DTD XHTML Basic 1.1//EN"
  doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd" />

Vea aquí para obtener más información sobre identificadores públicos y del sistema en XML.

Aparentemente, esta no es la razón por la que Fx y Chrome no renderizarían su XML usando XSLT (el tipo de contenido fue la razón), pero es algo que probablemente desee arreglar.

Respondido el 20 de junio de 20 a las 10:06

La razón por la que Fx y Chrome no se procesaban era el tipo de contenido, además (después de que se corrigió el tipo de Copntent) Chrome y Safari se caían (dejaban de aplicar XSLT y mostraban un mensaje de error, mostrando lo que XHTML se había producido hasta ahora - en este caso nada) aplicando el XSLT debido a mi primer valor doctype-public, invirtiendo los apóstrofos y las comillas resolvió el error. Sin embargo, como ha señalado, debería separar el valor doctype-system del doctype-public, ¡gracias! Actualizaré mi respuesta. - markmnl

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.