我正在處理一個數據聚合項目,我需要將來自各種數據提供程序的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