0

正在使用带有转义字符的文件名解析 XML。这是服务器上的文件名:
Account-V%29%27%22%3B%3A%3E.layout

当我应用文档功能时,它会自动转换转义字符。

`<xsl:apply-templates select="document('Account-V%29%27%22%3B%3A%3E.layout')/Layout"/>

上面会产生一个错误,因为它在服务器上找不到这个文件:
Account-V)'";:>.layout

有没有办法告诉 document() 函数不转换文件中的转义字符?我尝试将它包装在变量周围,但它不起作用。

4

3 回答 3

1

如果您使用的是 XSLT 2.0,请尝试使用encode-for-uri()

select="document(encode-for-uri('Account-V%29%27%22%3B%3A%3E.layout'))/Layout"
于 2013-07-17T22:29:36.463 回答
0

传递给 document() 函数的 URI 被取消引用的方式在很多方面是实现定义的,并且许多 XSLT 处理器允许您对其进行一些控制,例如允许您提供用户编写的 URIResolver。

因此,我认为如果不了解您的 XSLT 处理器,就无法回答这个问题。

于 2013-07-18T07:53:17.627 回答
0

找到了一种解决方法,该方法有效。不是最漂亮的,但是在执行 XSLT 之前,在 Java 中做一个字符串来替换,例如 fileNames.replace("%","%25") 这会强制 document() 函数将百分号转义为百分号,在服务器上生成正确的文件名。

于 2013-07-26T15:47:09.110 回答