使用包含转义字符的文件名解析XML。这是服务器上的文件名:
帐户-V%29%27%22%3B%3A%3E.layout
当我应用文档功能时,它会自动转换转义字符。
`<xsl:apply-templates select="document('Account-V%29%27%22%3B%3A%3E.layout')/Layout"/>
以上产生错误,因为它无法在服务器上找到此文件:
帐户-V)'“;产品:&gt; .layout
有没有办法告诉document()函数不转换文件中的转义字符?我尝试围绕变量包装它,但它不起作用。
答案 0 :(得分:0)
如果您使用的是XSLT 2.0,请尝试使用encode-for-uri()
select="document(encode-for-uri('Account-V%29%27%22%3B%3A%3E.layout'))/Layout"
答案 1 :(得分:0)
传递给document()函数的URI被取消引用的方式在很多方面都是实现定义的,许多XSLT处理器可以让您对它进行一些控制,例如允许您提供用户编写的URIResolver。
所以我不认为在不知道你的XSLT处理器的情况下可以回答这个问题。
答案 2 :(得分:0)
找到一个可行的解决方法。不是最漂亮的,但在执行XSLT之前,在Java中执行一个字符串替换,例如fileNames.replace(“%”,“%25”)这会强制document()函数将百分号转义为百分比,这会在服务器上生成正确的文件名。