如何用XSL的translate函数替换字符串中的短横线与点为斜杠
解决XSLT中替换短横线和点为斜杠的问题
你的代码存在两个关键问题:
- 目标字符串错误:你传入
translate的是字面量'string_name',这会处理这个固定字符串而非你实际要操作的变量或节点。需要替换成真实的数据源——比如当前节点用.,变量用$string_name。 - translate参数不匹配:
translate函数的第三个参数与第二个参数按位置一一对应。当你写translate(..., '-.', '/')时,第二个参数有2个字符,第三个参数仅1个,此时第二个字符.会被删除而非替换为/。要让两个字符都替换成/,第三个参数需写成'//'(与第二个参数长度一致)。
正确示例
假设要处理的是名为$target_str的变量:
<xsl:value-of select="translate($target_str, '-.', '//')"/>
如果是处理某个节点(比如当前上下文的my-string节点):
<xsl:value-of select="translate(my-string, '-.', '//')"/>
效果验证
输入字符串abc-def.ghi经上述代码处理后,会输出abc/def/ghi,完全符合预期。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

