Firefox 3 не применяет мою таблицу стилей xslt, но другие браузеры

Я пытаюсь обслуживать динамически генерируемые xml-страницы с веб-сервера и предоставить пользовательский, статический xslt с того же веб-сервера, который выгрузит обработку в клиентский веб-браузер.

до недавнего времени я отлично работал в Firefox 2, 3, IE5, 6 и Chrome. В последнее время, однако, что-то изменилось, и Firefox 3 теперь отображает только текстовые элементы в источнике.

источник страницы начинается следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Firefox 2.0 and Internet Explorer 7 use simplistic feed sniffing to override desired presentation behavior for this feed, and thus we are obliged to insert this comment, a bit of a waste of bandwidth, unfortunately. This should ensure that the following stylesheet processing instruction is honored by these new browser versions. For some more background you might want to visit the following bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=338621 -->
<?xml-stylesheet type="text/xsl" href="/WebObjects/SantaPreview.woa/Contents/WebServerResources/Root.xsl"?>
<wrapper xmlns="http://www.bbc.co.uk/ContentInterface/Content" xmlns:cont="http://www.bbc.co.uk/ContentInterface/Content" sceneId="T2a_INDEX" serviceName="DSat_T2">
    ....

Firebug показывает это корень.файл xsl загружается, и заголовки ответов для него включают строку

Content-Type    text/xml

Я также пробовал его с application / xml в качестве типа контента, но это не имеет значения: - (

расширение веб-разработчика также показывает правильный сгенерированный источник, и если вы сохраните его и загрузите страницу в Firefox, он отобразится правильно.

версия Firefox, отображающая проблему, - 3.0.3

любые идеи, что я мог бы быть делаю не так?

5 ответов


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

для меня это предполагает, что что-то подозрительное происходит с вашими выражениями xpath, и что xsl:template/@match атрибуты не соответствуют исходному документу.

вы не предоставляете достаточно информации для дальнейшей диагностики, поэтому это слепое предположение-все, что я могу предложить.

EDIT: оказалось, проблема заключалась в том, что IE и Chrome молча принимают nodeset в качестве аргумента длина строки, а ФФ3 не. Обратите внимание, что спецификация задает необязательный строковый аргумент и не указывает поведение с аргументом nodeset.


Если вы используете NoScript, это также отключает таблицы стилей XSL, пока вы Allow <site>.


отвечая на мой собственный вопрос в свете последующего исследования. ddaa привести меня в правильном направлении.

Firefox кажется довольно суетливым с преобразованиями xslt. Дважды проверьте xslt, чтобы убедиться, что у него нет ошибок, которые IE и Chrome маскируют.

XML Spy-хороший, хотя и не дешевый продукт, который выделит ряд ошибок в xslt. Кажется, что он поднимает по крайней мере столько проблем, сколько рендерер Firefox делает.

кажется, вы не можете полагаться на расширение веб-разработчика, чтобы поднять проблему, к сожалению.


Я просто пишу здесь для потомства - у меня был тот же симптом, также Firefox 3. Однако в мой случае, проблема была в другом:

Firefox, кажется, действительно, действительно не нравится, когда файл XSL имеет подчеркивание _ в имя. Мой файл XSLT назывался чем-то вроде my_super_nice_xslt_which_loads_in_opera_and_ie.xsl.

Итак, люди, давайте не будем использовать подчеркивания. Используйте дефис (минус) : my-super-nice-xslt-which-loads-in-opera-and-ie.xsl.

затем он также загрузится в Firefox. Я думаю, отныне я буду использовать простые мертвые имена с буквами и цифрами. Вы знаете поговорку: "Один раз укушен, два раза застенчив". (в моем случае меня укусили дважды, но забыли в первый раз, так что на этот раз я застенчив в четыре раза.)


попробуйте использовать его как application / xml вместо text / xml