Будет ли Firefox использовать XSLT для внешних объектов?
Вопрос
Я пытаюсь взять, скажем, XML-документ http://example.org/data.xml и покажите его с применением таблицы стилей XSL.(Я не могу изменить сам документ и добавить директиву)
Итак, есть несколько таких служебных XML-файлов:
обертка.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
<!ENTITY content SYSTEM "http://example.org/data.xml">
]>
<?xml-stylesheet type="text/xsl" href="unwrap.xsl" ?>
<wrapper>
&content;
</wrapper>
развернуть.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="stylesheet.xsl"/>
<xsl:template match="/wrapper/node()[1]">
<xsl:apply-imports/>
</xsl:template>
</xsl:stylesheet>
Итак, подведем итог:stylesheet.xsl написан для http://example.org/data.xml, браузер указывает на файл Wrapper.xml, и пользователь должен увидеть преобразованный http://example.org/data.xml.
Это один из тех редких случаев, когда в IE (и Chrome) все работает как положено, но не в Firefox.
AFAIK Firefox поддерживает внешние объекты XML, но кажется, что они невидимы в коде XSL.я нашел Эта статья с 2006 года описана эта проблема в Firefox 1.5 (я использую 3.5.3)
Есть ли обходной путь для этого?
Решение
В настоящее время FireFox не загружает внешние DTD и ссылки на объекты из соображений безопасности и проблем с отказом в обслуживании. Например: http://en.wikipedia.org/wiki/Billion_laughs
Есть открытый Ошибка Мозиллы описание причин и длительные дебаты о том, стоит ли делать это чем-то настраиваемым: https://bugzilla.mozilla.org/show_bug.cgi?id=22942
Кажется, есть один обходной путь для загрузки DTD., но я предполагаю, что это, вероятно, неподходящее решение для тебя.
Фаерфокс загрузится местный DTD-файлы
если вы поместите их в этот каталог для Windows:
C:\Program Files\Mozilla Firefox\res\dtd\...
Каталог для Linux:
/**mileage may vary**/MozillaFirefox/lib/res/dtd/
Одна из идей, как обойти использование ссылки на сущность:Если вы можете контролировать содержимое файла-обертки.xml, вы можете получить содержимое http://example.org/data.xml (на стороне сервера) и вывести его как полное содержимое файла-оболочки с добавлением инструкции по обработке таблицы стилей (при условии, что у вас есть некоторые динамические возможности на стороне сервера).