Is the Android Browser capable of performing an xs

2020-02-28 04:52发布

问题:

I have an xml file I wish to transform using an xsl-document, but I can't seem to make it work on even the latest available Android versions.

I tried adding a <?xml-stylesheet/> tag to the xml, but that didn't work in either the native browser or in Dolphin Browser.

E.g:

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

and

<?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>

is supposed to generate italic text, which it does in most desktop browsers (chrome has that annoying shared script root policy that ensures it only works when the files are not located on a local disc.) But it won't work in the mobile browser.

Is there a way to script the transform to happen client-side, or is the only option to do it server-side?

回答1:

See Android issue 9312 To summarize: Android browser does not support XSLT client-side until 2.1.



回答2:

I have a site completely developed with XML, XSLT and XHTML. It does not render in my Android DroidX phone but renders in all the browsers elsewhere. I have no definitive answer as to if this means Android does not support XSLT.



回答3:

Works fine in Opera mini. I am using Android 1.5 tablet.



回答4:

The default Android Browser starts supporting xsl transforms in the version that shows up in Android 4.0, Ice Cream Sandwich.

Other mobile browsers that have finally started supporting xsl are Opera Mobile and the Chrome Android Browser, currently in beta.



回答5:

Yes, It very much is since the Android platform incorporates the Webkit layout engine.

And to my knowledge it does support XSLT. I am sure of desktop versions of webkit but you can also take a look at WebKit's XSLT implementation for in-depth info.



回答6:

Webkit does have XSLT functionality through the use of the included libxslt library. I have successfully done transforms using the stylesheet declaration as well as using the Javascript XSLTProcessor class. This works in most webkit browsers except for Android and iPhone.

It seems that to save space they have purposely disabled the xslt functionality and my guess would be that it was a an optimization done for mobile browsers.

Tested using Android 2.2 on the Galaxy Tablet and the XSLTProcessor class does not exist.



回答7:

I just tested an XSLT example with Froyo browser and the result is a totally white page. However I installed Opera mobile browser for Android and it renders my example perfectly.

I cannot test in Opera mini because my test is served in a no internet accesible LAN.



回答8:

I downloaded Opera Mobile Version: 12.00 for my Desire and XSLT finally works on my phone. So a great tip is to download Opera Mobile in Market.