我正在浏览一些XSLT函数并遇到两个主要命名为翻译和替换,我明白,在一天结束时,两个函数的工作都在替换声明实体上的一些内容(请在此更多地启发我).
@H_301_22@解决方法
此外,我正在编写一个XSLT,我希望用下面的一堆值替换单个值.
<div class="translate"> <xsl:value-of select="translate(current(),' ','XXXXX')"/> </div> <div class="replace"> <xsl:value-of select="replace(current(),'XXXXX')"/> </div>
翻译只添加一个X,虽然我添加了XXXXX,因为替换工作正常.
有人可以让我知道背景中发生了什么吗?
这是一个有效的样本http://xsltransform.net/6rewNxE/2
translate()和replace()之间的区别
>使用translate($s,$mapFrom,$mapTo)更改的出现次数
$mapFrom中给出的字符到$mapTo中等效位置的字符.
>使用replace($s,$pattern,$replacement)进行更改
由匹配给出的匹配子串的出现
$pattern regex到$replacement字符串.
请注意,translate()从XPath 1.0开始可用;从XPath 2.0中替换().
因此,在您的示例中:
> translate()将用’X’替换每个”(空格)字符字符,因为$mapTo字符对应于$mapFrom中”(空格)的等价位置是’X’.> replace()将替换第一个“”(单空格)子字符串使用“XXXXX”,因为文字$pattern匹配第一个出现一个“”(单空格)子串并用它替换它完整的$替换字符串.