【发布时间】:2011-11-05 02:17:05
【问题描述】:
我正在从事一个数据聚合项目,我需要将来自各种数据提供者的 XML 数据转换为一种通用格式,这需要正确转义数据集中的所有 URI 值。这是我从数据提供者那里收到的示例 URI。它在其路径组件中包含保留字符(“[”、“]”):
http://ogimages.bl.uk/images/001/001ROY000018D03U00107000[SVC1].jpg
这是我需要的转义形式:
http://ogimages.bl.uk/images/001/001ROY000018D03U00107000%5BSVC1%5D.jpg
我计划使用 XSLT 和 EXSLT encode-uri 函数 (http://www.exslt.org/str/functions/encode-uri/str.encode-uri.html) 在转换时转义 URI。目前我使用如下:
xsl:value-of select="str:encode-uri(., true())"/>
转义完整的 URI 并导致
http%3A%2F%2Fogimages.bl.uk%2Fimages%2F001%2F001ROY000018D03U00107000%5BSVC1%5D.jpg
这不是我需要的,因为如果 URI 保留字符位于正确的位置,我想保留它们。
如果我按如下方式使用 encode-uri 函数
xsl:value-of select="str:encode-uri(., false())"/>
括号不会被转义,因为 encode-uri 函数在使用布尔 false 标志调用时不会转义保留字符。
所以我想,我需要在 URI 的各个路径组件上应用 URI 编码。是否有任何现有功能或者我需要在 XSL(T) 中开始 URI 解析?
谢谢
【问题讨论】: