IE9 и Chrome не рендеринг XML с XSL, если XML является локальным, а XSL находится на удаленном сервере

у меня есть следующий 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 ответов


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

Chrome блокирует локальную обработку XML и XSLT! Это проблема или они отключили его по соображениям безопасности. Посмотри на это!--5-- > Отчет Об Ошибке 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 оба должны быть на веб-сервере или локально сохранены (без смеси).


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

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