2010-11-12 32 views
0

我最近一直在玩XML格式和XLST文件,因为它似乎是一个UI问题的最直接的解决方案,我一直在摔跤,涉及用户以不同的方式访问中央数据。在我的实验中,我创建了一个非常好的格式表,在Internet Explorer中看起来很棒。当我在Firefox中测试时,我始终得到相同的错误消息:为什么Firefox不能解析这个XSLT?

“加载样式表时出错:解析XSLT样式表失败。”

我试过把样式表放到一个非常基本的文档中,仍然遇到同样的问题。我一直在检查教程和其他webforums并模仿示例,但我似乎无法找到任何明确适用的内容。

这里是我的测试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 2010-11-12 14:30:59

+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 2010-11-12 15:06:35

2

我觉得最有用使用一个单独的工具来发现问题, FireFox(等)不会报告。安装和使用,比如说,xsltproc命令,它提供了更多有用的结果。例如,我遇到了一个文件,其中Firefox的唯一响应是(可以选择):“解析XSLT样式表失败”,或者在样式表中版本= 1.1,“同样无用”解析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'' 

因此,我经常通过xsltproc或其等价物运行我的所有XML和XSL文件在将它们送到我友好的邻居浏览器之前,它们“运行干净”。我还没有找到任何浏览器,其中“优雅和信息丰富”处理XSLT问题。

另外,我觉得很坦率地说容易来看看命令的输出(即HTML),说的是管道到了分页更多命令,而不是试图寻找它在浏览器中,直到我知道我非常接近我正在寻找的东西。如果我试图在生成的(比如说)HTML输出中发现问题,我真的不想首先将它看作“HTML”。如果XSL变换是“呕吐废话”(当然,起初他们,至少对我来说),浏览器试图把它变成美丽的东西只是在找出样式表中的错误。

相关问题