2010-11-12 2 views
0

Я недавно играл с форматированием XML и XLST-файлами, потому что это похоже на самое прямое решение проблемы с пользовательским интерфейсом, с которой я боролся, с участием пользователей, обращающихся к центральным данным по-разному. В моем эксперименте я создал очень хороший лист форматирования, который отлично выглядит ... в Internet Explorer. Когда я тестирую его в Firefox, я постоянно получаю такое же сообщение об ошибке:Почему Firefox не анализирует этот XSLT?

«Ошибка при загрузке таблицы стилей: анализ таблицы стилей XSLT не удался».

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

Вот мой тестовый XML-файл:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="fox.xslt"?> 
<article> 
    <title>Making Excellent Pasta Sauce</title> 
    <synopsis>A simple recipe for an amazing sauce, with tips on getting that extra flavor.</synopsis> 
    <content>Here is my content.</content> 
    <tags> 
     <tag>sauce</tag> 
     <tag>recipes</tag> 
    </tags> 
</article> 

А потом, вот мой XSLT-файл (с именем, как можно понять из примера блока выше, "fox.xslt"

<?xml version="1.0" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> 
<xsl:template match="/"> 
<html> 
    <head> 
    </head> 
    <body> 
    <xsl:for-each select="article"> 
     TITLE: <xsl:value-of select="title"/> <BR/> 
     SYNOPSIS: <xsl:value-of select="synopsis"/> <BR/><BR/> 
    </xsl:for-each> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

. Я подозреваю, что это может иметь какое-то отношение к <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">, потому что я видел несколько примеров, сделанных с этим в примерах, я пробовал несколько различных значений здесь и, похоже, не попал на тот, который работает с этим пример.

Я уверен, что это, вероятно, основная проблема, я просто смутился при отслеживании. Надеюсь, кто-то может привести меня к «моменту лба».

Заранее благодарен!

ответ

3

Попробуйте заменить таблицу стилей элемента с этим:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

Вы также можете добавить это:

xmlns="http://www.w3.org/1999/xhtml" 
+0

Я должен сказать, что это работает с 'version =" 1.0 "(или 1.1). Основной проблемой является, вероятно, пространство имен 'xsl'. – Bruno

+0

Проблема ** - это пространство имен XSLT. Но ваш ответ пропустил объяснение. Это URI пространства имен 'http: // www.w3.org/TR/WD-xsl' использовалось ранее M $ productos, реализующим старый рабочий проект XSLT. Позже это было устарело. Никто не жалуется, что XSLT-процессор сегодня позволяет это пространство имен. – 2010-11-12 14:45:43

+0

@ Alejandro, да, но я только что протестировал Firefox 3.6, и если атрибут 'version' отсутствует, он тоже не работает (так что обе проблемы должны быть исправлены). – Bruno

2

Я считаю, что наиболее полезно использовать отдельный инструмент для поиска проблем, FireFox (и др.) Не сообщают. Установите и используйте, скажем, команду xsltproc, которая дает гораздо более полезные результаты.

Например, я столкнулся с файлом, в котором был только ответ Firefox (возьмите ваш выбор): «Разбор таблицы стилей XSLT не удался» или, с версией = 1.1 в таблице стилей, «одинаково бесполезный» анализ Parsing XSLT не удался. "

Итак, я пошел в командной строке и вошел, сказать ..." xsltproc bah.xsl humbug.xml», а затем, вуаля, там было:

error 
xsltCompileStepPattern : ']' expected 
compilation error: file bah.xsl line 157 element template 
xsltCompilePattern : failed to compile 'ATOM[@STATE='GAS'' 

поэтому я обычно запустите все мои файлы XML и XSL через xsltproc или его эквивалент такой что они «бегут чистыми», прежде чем подавать их в мой дружественный браузер окрестностей. Я еще не нашел любой браузер, который «любезно и информативно» обрабатывает проблему XSLT.

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

Смежные вопросы