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 на локальном жестком диске пользователя (используя это приложение), а затем выполнить "полностью законное" преобразование на стороне клиента.