在Windows下XSLT样式表的相对路径问题

7
我有一个样式表位于/template.xsl,以及一个xml文件位于/en/index.xml,其中"/"(根目录)实际上的形式为"C:\stuff\otherstuff\"。
xml文件包含<?xml-stylesheet type="text/xsl" href="../template.xsl"?>,但样式表未被检测到。我尝试了无数变化,使用反斜杠或成对的反斜杠而不是斜杠,使用file:///, 绝对路径等等...
怎么回事?
编辑:对于记录,它在IE中有效但在Firefox中无效。
编辑:这里是解释:http://forums.mozillazine.org/viewtopic.php?f=25&t=670995 这也包括解决方案:
  1. 在地址栏中输入about:config
  2. 将security.fileuri.strict_origin_policy更改为false

1
我无法重现这个问题。任何带有像那样的 PI 的输入源,都会在父文件夹中调用一个转换。请注意,有些情况下您需要特权才能执行此操作。 - user357812
我曾经遇到过这种情况,当生成的绝对路径包含空格时会发生。您使用的XSL转换器是什么(即希望调用哪个)?XML解析器应该调用这个转换器吗?只是 MSXML 吗? - Alain Pannetier
@Alejandro:我不明白你所说的“在父文件夹中调用转换”的意思。 @Alain:路径中不包含空格。我只是用Firefox 4打开xml文件,所以它使用的是Firefox使用的任何东西。如果xml和xslt文件放在同一个文件夹中,一切都正常。 - Norswap
3个回答

1
我注意到,如果您将template.xsl放在子目录DISPLAY中,那么href="DISPLAY/template.xsl"可以正常工作。但是,如果您将XML放在另一个子目录A中,href="../DISPLAY/template.xsl"无法正常工作。 似乎存在“..”的问题。 (即使在2015年,使用Firefox 40.0时也是如此!) 请参见Nicholas Smethurst在以下链接中的附件: https://bugzilla.mozilla.org/show_bug.cgi?id=439924 --> 如上所述,切换security.fileuri.strict_origin_policy。

0

我认为可能有两个问题。
1. 你说文件放在同一个文件夹中,href="../template.xsl"指向XML文件的父文件夹。也许你应该使用href="template.xsl"。
2. Firefox是Beta版本。如果你正在测试东西,你应该始终使用稳定版本,否则可能是Beta软件导致错误。


  1. 我没有说过那个,template.xsl实际上在父文件夹中(请重新阅读我的帖子)。
  2. 它在Firefox 3中也不起作用。
- Norswap

-1
如果样式表被称为template.xml,正如你所说的那样,那么对template.xsl的引用将无法找到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接