我们的GSA使用FileConnector索引作为DFS链接目标的不同共享。我正在尝试在前端XSL中将file://filesrv01.example.com/share$/dir/file.ext
重写为file://R:/hare/dir/file.ext
。
有一个xsl:choose
元素测试不同的协议,但不是file://
,所以我假设源链接的默认处理是这个节点:
<xsl:otherwise>
<xsl:value-of disable-output-escaping='yes' select="U"/>
</xsl:otherwise>
我们创建了一个新的xsl:when
节点,如下所示:
<xsl:when test="starts-with(U, 'file://server.example.com/share$>
<xsl:value-of disable-output-escaping='yes'
select="concat('file://R:/share/',
substring-after(U,'file://server.example.com/share$/') )"/>
</xsl:when>
这适用于我们索引中的几乎所有条目,但是当路径包含德语变音符号时它会失败。输入,实际和预期输出:
file://server/share$/dir/FileWithUmläut.txt
file://R:/share/dir/FileWithUmläut.txt
file://R:/share/dir/FileWithUmläut.txt
为什么默认xsl:otherwise
在不改变变音符号的情况下工作但是我们的concat + substring不是?我可以检查或改变什么?
编辑#1
XSL文件中只有一个输出元素:<xsl:output method="html"/>
。 XSL本身在Notepad ++中被识别为ANSI,在UI文本中有一些元音变换。输出到浏览器是utf-8 xhtml。
编辑#2
当我用以下块替换xsl:when
时,编码不会被破坏,并且可以打开链接(不使用DFS根,而是直接使用unc)。因此,我认为它不是XML或XSL的编码,感谢你的输入,@MathiasMüller。
<xsl:when test="starts-with(U, 'file://server.example.com/share$/')">
<xsl:value-of disable-output-escaping='yes' select="U"/>
</xsl:when>
答案 0 :(得分:0)
一旦我使用file:///R:/
而不是file://R:/
(额外的正斜杠),我的具体问题就消失了,但我仍然试图弄清楚为什么会有所帮助。在GSA XSL中有一个JavaScript代码片段来修复&#34;在IE中编码问题,但不关心协议是否有2或3个斜杠。
尽管Firefox不允许开箱即用的文件协议,但从那里复制时,这两种语法都不起作用。这使我相信我当前安装的IE 9在使用正确的file:///
前缀时自行修复了一些编码问题而Firefox没有。
由于我们希望这些链接也可以在Firefox中使用,我将继续寻求在unicode的土地上寻求荣耀,它被file:///
的古龙所困扰,是IE和FF的家。 / p>