Quelle est la différence entre traduire et de les remplacer dans XPath
J'ai été en passant par certaines fonctions XSLT et suis tombé sur deux majorly nommé comme translate
et replace
, j'ai compris que, d'ici à la fin de la journée, le travail des deux fonctions est de remplacer une partie de son contenu a déclaré entité (merci de m'éclairer davantage sur ce sujet).
Aussi, j'ai écrit une transformation XSLT où dans je veux remplacer une valeur unique avec un tas de valeurs comme ci-dessous.
<div class="translate">
<xsl:value-of select="translate(current(),' ', 'XXXXX')"/>
</div>
<div class="replace">
<xsl:value-of select="replace(current(),' ', 'XXXXX')"/>
</div>
La translate
est d'ajouter un seul X
, même si j'ai ajouté XXXXX
, où le remplacer fonctionne bien.
Quelqu'un peut s'il vous plaît laissez-moi savoir ce qui se passe en arrière-plan?
Voici un Exemple de travail http://xsltransform.net/6rewNxE/2
OriginalL'auteur user2423959 | 2016-08-17
Vous devez vous connecter pour publier un commentaire.
Différence entre translate() et replace()
caractères donné dans
$mapFrom
à ceux dans des postes équivalents dans$mapTo
.les occurrences de les chaînes de correspondance donné par un correspondant de
$pattern
regex pour un$replacement
chaîne.Noter que
translate()
est disponible à partir de XPath 1.0;replace()
, de XPath 2.0.Par conséquent, dans votre exemple:
translate()
remplacera chaque' '
(espace) de caractère avec un"X
'caractère, parce que le
$mapTo
caractère qui correspond à l'l'équivalent de la position de
' '
(espace) dans le$mapFrom
est un"X
'.replace()
remplacera le premier" "
(interligne simple) sous-chaîneavec un
"XXXXX"
, parce que le littéral$pattern
correspond à la premièrel'apparition d'un
" "
(interligne simple) sous-chaîne et la remplace parla pleine
$replacement
chaîne.OriginalL'auteur kjhughes
Le remplacer-fonction permet de remplacer une chaîne par une autre dans une chaîne de caractères. Si il y a la Chaîne "abcacb" et vous remplacez "ab" avec "xy", vous obtenez "xycacb".
La fonction de traduction remplace la chaîne charcter par caractère. Le premier caractère dans le "s'il vous plaît-remplacer la chaîne" sera remplacé par le premier caractère de "remplacer-avec-cette-chaîne"
Donc si il y a la Chaîne "abcacb" et de traduire "ab" avec "xy", vous obtenez "xycxcy".
translate("abcacb","ab","xy") = "xycxcy"
Pour votre cas:
Les explications de l'Oracle-SQL peut aussi aider (essentiellement les mêmes):
OriginalL'auteur Gehtnet