Firefox 3不适用我的xslt样式表,但其他浏览器也适用

时间:2008-10-21 10:47:11

标签: firefox xslt firefox-3

我正在尝试从Web服务器提供动态生成的xml页面,并从同一个Web服务器提供自定义的静态xslt,这会将处理卸载到客户端Web浏览器中。

直到最近,我才在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显示正在加载Root.xsl文件,其响应头包含行

Content-Type    text/xml

我也尝试过将application / xml作为内容类型,但没有区别: - (

Web Developer Extension也显示正确生成的源,如果您保存并在Firefox中加载页面,它会正确显示。

显示问题的Firefox版本是3.0.3

任何想法我可能做错了什么?

5 个答案:

答案 0 :(得分:6)

仅显示文本元素是您从空XSL样式表中获得的行为。

对我来说,这表明你的xpath表达式正在发生一些可疑的事情,并且xsl:template / @ match属性与源文档不匹配。

您没有提供足够的信息来进一步诊断,所以我可以提供这种盲目猜测。

编辑:原来问题是IE和Chrome默默地接受一个节点集作为string-length的参数,而FF3没有。请注意,规范要求使用可选的字符串参数,并且不指定具有nodeset参数的行为。

答案 1 :(得分:4)

如果您使用NoScript,那么在您Allow <site>之前也会禁用XSL样式表。

答案 2 :(得分:3)

根据后续调查回答我自己的问题。 ddaa引导我朝着正确的方向前进。

Firefox似乎对xslt转换非常挑剔。仔细检查您的xslt,确保它没有IE和Chrome屏蔽的错误。

XML Spy是一个很好的,但不便宜的产品,它会突出显示xslt中的一系列错误。它似乎至少与Firefox渲染器一样多。

不幸的是,您似乎无法依赖Web Developer扩展来解决问题。

答案 3 :(得分:3)

我只是为了后代而写这里 - 我有同样的症状,也是Firefox 3.但是在 my 的情况下,问题是另一个:

当一个XSL文件在名称中有一个下划线 _ 时,Firefox似乎真的真的不喜欢。我的XSLT文件被称为my_super_nice_xslt_which_loads_in_opera_and_ie.xsl

所以,人们,不要使用下划线。改为使用连字符(减号): my-super-nice-xslt-which-loads-in-opera-and-ie.xsl

然后它也将加载到Firefox中。我想从现在开始我将只使用带有字母和数字的死简单名称。你知道这句话,“曾经被咬过,两次害羞”。 (在我的情况下,我被咬了两次,但第一次忘记了,所以这次让我感到害羞四次。)

答案 4 :(得分:0)

尝试将其作为application / xml而不是text / xml