IE9 и Chrome не отображают XML с помощью XSL, если XML локальный, а XSL находится на удаленном сервере - PullRequest
8 голосов
/ 08 июля 2011

У меня есть следующий XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>

и XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <html>
        <head><title>Test</title></head>
    </html>
</xsl:stylesheet>

Это прекрасно работает в IE8, но не в IE9 или Chrome. Я читал, что IE9, кажется, запрещает загрузку XSL с удаленного сервера, если исходный файл XML находится на локальной машине. Есть ли способ заставить IE9 и Chrome применить удаленный XSL-файл к локальному XML-файлу, не вмешиваясь в настройки безопасности браузеров? У нас есть настольное приложение, которое генерирует отчеты XML и отображает их в браузере, преобразованном в таблицы стилей, размещенные на удаленном сервере.

Ответы [ 2 ]

7 голосов
/ 09 июля 2011

Это работает локально? Я так не думаю, потому что в XML и XSLT есть некоторые ошибки.

Chrome блокирует локальную обработку XML и XSLT! Это проблема, или они отключили ее по соображениям безопасности. Посмотрите на этот Отчет об ошибках Chrome , чтобы найти некоторые обходные пути.

IE9 отключил поддержку смешения локального XML и удаленного XSLT. Также по соображениям безопасности! (У меня нет ссылки для этого)

В вашем XML должен быть хотя бы один корневой элемент:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>
<hello/>

и ваш XSLT должен иметь несколько шаблонов XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
    <head><title>Test</title></head>
    </html>
</xsl:template>

</xsl:stylesheet>

С этими исправлениями этот пример будет работать для IE8 и Firefox.
В Chrome XML и XSLT должны быть на веб-сервере. В IE9 оба должны быть на веб-сервере или храниться локально (без смешения).

3 голосов
/ 09 июля 2011

У нас есть настольное приложение, которое генерирует отчеты XML и отображает их в браузере, преобразованы с таблицы стилей, которые размещены на удаленный сервер

Я думаю, что самый простой способ - это загрузить или сохранить / кэшировать (последнюю копию) таблицу стилей по протоколу HTTP на локальном жестком диске пользователя (используя это приложение), а затем выполнить «полностью легальное» преобразование на стороне клиента.

...