Способен ли браузер Android выполнить преобразование xsl?

#android #browser #xslt

#Android #браузер #xslt

Вопрос:

У меня есть XML-файл, который я хочу преобразовать с помощью xsl-документа, но, похоже, я не могу заставить его работать даже на последних доступных версиях Android.

Я попытался добавить <?xml-stylesheet/&&t; тег к xml, но это не сработало ни в родном браузере, ни в Dolphin Browser.

Например:

 <?xml version="1.0" encodin&="UTF-8"?&&t;
<?xml-stylesheet type="text/xsl" href="style.xsl"?&&t;
<xmldata&&t;Hello world</xmldata&&t;
  

и

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

предполагается, что он генерирует курсивный текст, что он и делает в большинстве настольных браузеров (в Chrome есть эта раздражающая политика корневого доступа к общему скрипту, которая гарантирует, что он работает только тогда, когда файлы не расположены на локальном диске.)
Но это не будет работать в мобильном браузере.

Есть ли способ создать сценарий преобразования, чтобы оно происходило на стороне клиента, или это единственный вариант сделать это на стороне сервера?

Ответ №1:

У меня есть сайт, полностью разработанный с использованием XML, XSLT и XHTML. Он не отображается на моем телефоне Android DroidX, но отображается во всех браузерах в других местах. У меня нет окончательного ответа на вопрос, означает ли это, что Android не поддерживает XSLT.

Комментарии:

1. возможно, для экономии циклов процессора и защиты батареи ?! Я просто выполняю рендеринг на стороне сервера для Android. Я выполняю обнаружение в Java с помощью WURLF, а затем просто применяю преобразование только для этого случая, чтобы свести обработку сервера к минимуму.

Ответ №2:

Подведем итог в выпуске 9312 Android: браузер Android не поддерживает XSLT на стороне клиента до версии 2.1.

Комментарии:

1. У меня версия 2.2.1, поэтому проблема, похоже, сохраняется. В качестве альтернативы существует способ выполнить преобразование на стороне браузера с использованием javascript, и неисправно только преобразование, связанное с тегом.

2. В выпуске они упоминают, что тестировали его даже в последней версии Honeycomb SDK, и он по-прежнему не работает.

3. У меня Android 2.3, и он все еще не работает. По-видимому, сейчас это работает в Firefox, тогда как несколько месяцев назад этого не было. Надеюсь, Goo&le скоро добавит поддержку и для этого.

4. Браузер Dolphin недавно был обновлен, и теперь он может это делать.

Ответ №3:

Отлично работает в Opera mini. Я использую планшет Android 1.5.

Ответ №4:

Браузер Android по умолчанию начинает поддерживать преобразования xsl в версии, которая отображается в Android 4.0, Ice Cream Sandwich.

Другими мобильными браузерами, которые, наконец, начали поддерживать xsl, являются Opera Mobile и Chrome Android Browser, в настоящее время находящийся в стадии бета-тестирования.

Ответ №5:

Да, это действительно так, поскольку платформа Android включает механизм верстки Webkit.

И, насколько мне известно, он поддерживает XSLT. Я уверен в настольных версиях webkit, но вы также можете взглянуть на реализацию XSLT в WebKit для получения подробной информации.

Комментарии:

1. Когда я захожу на демонстрационную страницу mozilla.or&/projects/xslt/test.xml ссылка с этой страницы в моем мобильном браузере не отображает преобразованную XML-страницу, поэтому я предполагаю, что ответ отрицательный?

2. @Zaz: Вы пробовали использовать только xmlns:xsl=» w3.or&/1999/XSL/Transform «. Процессоры XSLT (браузеры) очень чувствительны к объявлениям пространства имен.

3. webkit mobile и webkit — не совсем одинаковые движки

4. предполагая, что пропущенный протокол в пространстве имен является опечаткой ^^, нет. По-прежнему нет кубиков. Кроме того: побочные эффекты настольного браузера, связанные с этим, включают элементы xhtml, которые не отображаются так, как они должны.

5. Я сам написал тестовый пример, чтобы подтвердить, что он не работает. Смотрите также Ответ rds.

Ответ №6:

Webkit обладает функциональностью XSLT благодаря использованию входящей в комплект библиотеки libxslt. Я успешно выполнил преобразования, используя объявление таблицы стилей, а также используя класс Javascript XSLTProcessor. Это работает в большинстве браузеров webkit, за исключением Android и iPhone.

Похоже, что для экономии места они намеренно отключили функциональность xslt, и я предполагаю, что это была оптимизация, выполненная для мобильных браузеров.

Протестировано с использованием Android 2.2 на планшете Galaxy, класс XSLTProcessor не существует.

Ответ №7:

Я только что протестировал пример XSLT с Froyo Browser, и в результате получилась полностью белая страница. Однако я установил Opera mobile browser для Android, и он отлично отображает мой пример.

Я не могу протестировать в Opera mini, потому что мой тест выполняется в локальной сети, недоступной через Интернет.

Ответ №8:

Я скачал мобильную версию Opera: 12.00 по своему желанию, и XSLT наконец-то работает на моем телефоне. Итак, отличный совет — загрузить Opera Mobile в Market.