为什么Firefox不解析这个XSLT?

时间:2010-11-12 13:52:40

标签: xml firefox xslt

我最近一直在使用XML格式和XLST文件,因为它似乎是一个UI问题最直接的解决方案,我一直在努力让用户以不同方式访问中心数据。在我的实验中,我创建了一个非常好的格式表,在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 个答案:

答案 0 :(得分:3)

尝试用以下内容替换样式表元素:

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

您可能还想添加此内容:

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

答案 1 :(得分:2)

我发现使用单独的工具查找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''

因此,我经常通过 xsltproc 或其等价物运行我的所有XML和XSL文件,以便在将其提供给友好的邻居浏览器之前“运行干净”。我还没有找到任何浏览器“慷慨且信息量大”处理XSLT问题。

此外,我发现它非常坦率地更容易查看命令输出(即HTML),比如通过将它连接到 less 用于分页的更多命令,而不是尝试在浏览器中查看它,直到我知道我非常接近我正在寻找的东西。如果我试图在生成的(比如)HTML输出中找到问题,我真的不想一开始就把它看作“HTML”。如果XSL转换是“喷出废话”(当然,他们首先,至少对我而言),浏览器尝试将其变成美丽的东西只会妨碍找到样式表中的错误。