我正在浏览一些XSLT函数并遇到两个主要命名为$dq = Author::get()->dataQuery();
$dq->sort(null, null, true);
$authors = Author::get()->setDataQuery($dq);
和translate
的内容,据我所知,到目前为止,这两个函数的工作正在取代一些内容。声明的实体(请在此更多地启发我)。
此外,我正在编写一个XSLT,我希望用一堆像下面的值替换单个值。
replace
<div class="translate">
<xsl:value-of select="translate(current(),' ', 'XXXXX')"/>
</div>
<div class="replace">
<xsl:value-of select="replace(current(),' ', 'XXXXX')"/>
</div>
只添加了一个translate
,但我添加了X
,因为替换工作正常。
有人可以让我知道后台发生了什么吗?
这是一个有效的样本http://xsltransform.net/6rewNxE/2
答案 0 :(得分:3)
$mapFrom
中的{strong> 字符 给$mapTo
中等效职位的人。$pattern
正则表达式为$replacement
字符串。请注意,translate()
从XPath 1.0开始可用; replace()
,来自XPath 2.0。
因此,在您的示例中:
translate()
会将每个' '
(空格)字符替换为&#39; X
&#39;
字符,因为$mapTo
字符对应于
' '
中$mapFrom
(空格)的等效位置为&{39; X
&#39;。replace()
将替换第一个" "
(单空格)子字符串
使用"XXXXX"
,因为文字$pattern
与第一个匹配
发生" "
(单空格)子字符串并将其替换为
完整的$replacement
字符串。答案 1 :(得分:2)
replace-function将一个字符串替换为字符串中的另一个字符串。如果有字符串“abcacb”并且用“xy”替换“ab”,则会得到“xycacb”。
replace("abcacb","ab","xy") = "xycabc"
translate函数逐字符替换字符串charcter。 “please-replace-this-string”中的第一个字符将替换为“replace-with-this-string”中的第一个字符 因此,如果存在字符串“abcacb”并且您将“ab”翻译为“xy”,则会得到“xycxcy”。
translate("abcacb","ab","xy") = "xycxcy"
根据您的情况:
Oracle-SQL函数的解释也可能有所帮助(基本相同):