如何将XSL参数传入replace函数?报错问题求解
解决XSLT replace函数中传入变量作为替换值的问题
这个报错的根源很清楚:在XSLT的replace()函数里,第三个参数(替换字符串)中的$是特殊标识,用来指代正则表达式捕获到的分组(比如$1表示第一个捕获组)。你把$platform放在单引号里,它就被当成了普通字符串,解析器会认为你想写一个分组引用,但platform不是数字,所以抛出了错误。
要把参数$platform的实际值作为替换内容,你不需要把它放在字符串引号里,直接将变量本身作为第三个参数传入即可:
<xsl:value-of select="replace(current(), 'replaceMe', $platform)"/>
这样replace()函数就会把current()节点内容里的replaceMe替换成$platform参数的真实值,而不会把$platform当成特殊的分组引用。
如果你的替换逻辑更复杂,需要把变量和其他字符串拼接起来作为替换值,可以用字符串连接运算符||(XSLT 2.0及以上版本支持),比如:
<xsl:value-of select="replace(current(), 'replaceMe', 'Prefix_' || $platform || '_Suffix')"/>
这样就能生成包含变量值的复合替换字符串了。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

