2010-10-01 13 views
11

Tengo un archivo xml que deseo transformar usando un documento xsl, pero parece que no puedo hacerlo funcionar incluso con las últimas versiones de Android disponibles.¿El navegador Android es capaz de realizar una transformación xsl?

Intenté agregar una etiqueta <?xml-stylesheet/> al xml, pero eso no funcionó ni en el navegador nativo ni en Dolphin Browser.

Por ejemplo: se supone

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="style.xsl"?> 
<xmldata>Hello world</xmldata> 

y

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/xmldata"> 
     <em><xsl:value-of select="/xmldata"/></em> 
    </xsl:template> 
</xsl:stylesheet> 

para generar texto en cursiva, lo que lo hace en la mayoría de los navegadores de escritorio (cromo ha que la política de la raíz de la escritura compartida molesto que asegura que sólo funciona cuando los archivos no se encuentran en un disco local.) Pero no funcionará en el navegador móvil.

¿Hay alguna manera de guiar la transformación para que ocurra en el lado del cliente, o es la única opción para hacerlo en el lado del servidor?

Respuesta

1

El navegador Android predeterminado comienza a admitir las transformaciones xsl en la versión que se muestra en Android 4.0, Ice Cream Sandwich.

Otros navegadores móviles que finalmente han comenzado a admitir xsl son Opera Mobile y Chrome Android Browser, actualmente en versión beta.

0

Sí, lo es mucho ya que la plataforma Android incorpora el motor de diseño Webkit.

Y que yo sepa, es compatible con XSLT. Estoy seguro de las versiones de escritorio de webkit pero también puede echar un vistazo a WebKit's XSLT implementation para obtener información en profundidad.

+0

Cuando visito la página de demostración http://www.mozilla.org/projects/xslt/test.xml vinculada desde esa página en el navegador de mi dispositivo móvil, no se muestra una página xml transformada, así que supongo que la respuesta es no ? – Zaz

+0

@Zaz: ¿Ha intentado utilizar solo los xmlns: xsl = "http://www.w3.org/1999/XSL/Transform". Los procesadores XSLT (navegadores) son muy sensibles a las declaraciones de espacios de nombres. –

+1

webkit mobile y webkit no son exactamente los mismos motores – rds

1

Tengo un sitio completamente desarrollado con XML, XSLT y XHTML. No se procesa en mi teléfono con Android DroidX, pero se procesa en todos los navegadores en otros lugares. No tengo una respuesta definitiva sobre si esto significa que Android no es compatible con XSLT.

+0

para ahorrar ciclos de CPU ¿quizás para proteger la batería? Solo estoy renderizando en el servidor para Android. Hago detección en Java con WURLF y luego solo aplico la transformación solo para este caso para mantener el procesamiento del servidor al mínimo. – Stef

2

Ver Android issue 9312 En resumen: el navegador de Android no es compatible con el lado del cliente XSLT hasta 2.1.

+0

Tengo la versión 2.2.1, por lo que parece que el problema persiste. Alternativamente, existe una forma de realizar el lado del navegador de transformación utilizando javascript, y es solo la transformación vinculada a la etiqueta la que está funcionando mal. – Zaz

+1

En el problema mencionan que lo probaron incluso en el último SDK de Honeycomb y todavía no funciona. –

+0

Tengo Android 2.3 y aún no funciona. Aparentemente funciona en Firefox ahora, mientras que hace unos meses no. Es de esperar que Google también lo agregue pronto. – Stef

0

Webkit tiene la funcionalidad XSLT mediante el uso de la biblioteca libxslt incluida. Realicé transformaciones con éxito utilizando la declaración de hoja de estilo y utilizando la clase Javascript XSLTProcessor. Esto funciona en la mayoría de los navegadores webkit, excepto para Android y iPhone.

Parece que para ahorrar espacio se ha desactivado intencionalmente la funcionalidad xslt y supongo que fue una optimización realizada para navegadores móviles.

Probado con Android 2.2 en Galaxy Tablet y la clase XSLTProcessor no existe.

0

Acabo de probar un ejemplo XSLT con el navegador Froyo y el resultado es una página totalmente en blanco. Sin embargo, instalé el navegador móvil de Opera para Android y muestra mi ejemplo a la perfección.

No puedo probar en Opera mini porque mi prueba se sirve en una LAN sin acceso a Internet.

1

Funciona bien en Opera mini. Estoy usando la tableta Android 1.5.

0

Descargué Opera Mobile Version: 12.00 para mi Desire y XSLT finalmente funciona en mi teléfono. Así que un buen consejo es descargar Opera Mobile en Market.

Cuestiones relacionadas