Je parcourais certaines fonctions XSLT et suis tombé sur deux principalement nommés translate
et replace
, j'ai compris que, à la fin de la journée, le travail des deux fonctions remplaçait du contenu sur déclaré entité (veuillez m'éclairer davantage à ce sujet).
J'écrivais également un XSLT où je veux remplacer une seule valeur par 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>
Le translate
n'ajoute qu'un X
, bien que j'aie ajouté XXXXX
, où le remplacement fonctionne correctement.
Quelqu'un peut-il me faire savoir ce qui se passe en arrière-plan?
Voici un exemple de travail http://xsltransform.net/6rewNxE/2
$mapFrom
à ceux qui occupent des positions équivalentes en $mapTo
.$pattern
correspondante à une chaîne $replacement
.Notez que translate()
est disponible à partir de XPath 1.0; replace()
, de XPath 2.0.
Par conséquent, dans votre exemple:
translate()
remplacera chaque caractère ' '
(espace) par un caractère 'X
', car le caractère $mapTo
qui correspond à la position équivalente de ' '
(espace) dans le $mapFrom
est un 'X
'.replace()
remplacera la première sous-chaîne " "
(simple espace) par une "XXXXX"
, car le littéral $pattern
correspond à la première occurrence d'une sous-chaîne " "
(simple espace) et la remplace par la chaîne complète $replacement
.La fonction de remplacement remplace une chaîne par une autre dans une chaîne. S'il y a la chaîne "abcacb" et que vous remplacez "ab" par "xy", vous obtenez "xycacb".
replace("abcacb","ab","xy") = "xycabc"
La fonction de traduction remplace le caractère de chaîne par caractère. Le premier caractère de la chaîne "please-replace-this-string" sera remplacé par le premier caractère de "replace-with-this-string" Donc s'il y a la chaîne "abcacb" et que vous traduisez "ab" par "xy" vous obtenez "xycxcy".
translate("abcacb","ab","xy") = "xycxcy"
Pour votre cas:
Les explications des fonctions Oracle-SQL peuvent également aider (essentiellement les mêmes):