我正在处理一个数据聚合项目,我需要将来自各种数据提供程序的XML数据转换为通用格式,这需要数据集中的所有URI值都正确转义。这里是我从数据提供者接收的一个示例URI。它包含保留字符( “[”, “]”)在其路径组成:使用XSLT转义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保留字符,如果他们在正确的地方。
如果我使用的编码,URI功能如下
xsl:value-of select="str:encode-uri(., false())"/>
,因为被称为一个布尔值false标志时编码-URI功能无法逃脱保留字符的括号没有逃脱。
所以我想,我需要的是在URI的单个路径组件上应用URI编码。是否有任何现有的功能,或者我需要在XSL(T)中启动URI解析?
Thx