Почему Firefox не анализирует этот XSLT? - PullRequest
0 голосов
/ 12 ноября 2010

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

"Ошибка загрузки таблицы стилей: не удалось выполнить синтаксический анализ таблицы стилей 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">, потому что я видел несколько разных вещей, которые делали это в примерах, я пробовал несколько различных значений здесь и, похоже, не достиг тот, который работает с этим примером.

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

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 12 ноября 2010

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

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

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

xmlns="http://www.w3.org/1999/xhtml"
2 голосов
/ 10 февраля 2012

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

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

Итак, я пошел в командную строку и ввел скажем ... "xsltproc bah.xsl humbug.xml", затем, presto, вот оно:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...