web-dev-qa-db-ja.com

XPathでの変換と置換の違いは何ですか

私はいくつかのXSLT関数を実行していて、translatereplaceの2つの主な名前に出くわしました。結局のところ、両方の関数の仕事が宣言されたエンティティ(これについて詳しく教えてください)。

また、私はXSLTを書いていて、そこでは単一の値を以下のような一連の値で置き換えたいと思っています。

<div class="translate">
            <xsl:value-of select="translate(current(),' ', 'XXXXX')"/>
        </div>
        <div class="replace">
            <xsl:value-of select="replace(current(),' ', 'XXXXX')"/>
        </div>

translateXを1つだけ追加していますが、XXXXXを追加しました。

誰かがバックグラウンドで何が起こっているのか私に知らせてもらえますか?

これが実際のサンプルです http://xsltransform.net/6rewNxE/2

9
user2423959

Translate()とreplace()の違い

translate()はXPath 1.0以降で使用できることに注意してください。 replace()、XPath 2.0から。

したがって、あなたの例では:

  • translate()は、各_' '_(スペース)文字を 'X'文字に置き換えます。 _$mapTo_内の_' '_(スペース)の同等の位置に対応する_$mapFrom_文字は「X」です。
  • replace()は、最初の_" "_(シングルスペース)サブストリングを_"XXXXX"_で置き換えます。リテラル_$pattern_は、最初に出現する_" "_(単一スペース)サブストリングに一致し、それを完全な_$replacement_ストリングに置き換えます。
5
kjhughes

Replace-functionは、文字列内の1つの文字列を別の文字列に置き換えます。文字列「abcacb」があり、「ab」を「xy」に置き換えると、「xycacb」が取得されます。

_replace("abcacb","ab","xy") = "xycabc"
_

変換関数は、文字列文字を文字で置き換えます。 「please-replace-this-string」の最初の文字は「replace-with-this-string」の最初の文字に置き換えられます。したがって、文字列「abcacb」があり、「ab」を「xy」に翻訳すると「xycxcy」を取得します。

translate("abcacb","ab","xy") = "xycxcy"

あなたの場合:

  • 置き換え:「」は「XXXXX」に置き換えられます
  • 翻訳 ''は 'XXXXXX'の最初の文字である 'X'に置き換えられます

Oracle-SQL関数の説明も役立つ場合があります(基本的に同じ)。

3
Gehtnet