J'ai besoin d'effectuer une recherche et un remplacement en utilisant XSLT 1.0 qui est vraiment adapté aux expressions régulières. Malheureusement, celles-ci ne sont pas disponibles dans la version 1.0 et je ne peux pas non plus utiliser les bibliothèques d'extension telles que EXSLT en raison de paramètres de sécurité que je ne peux pas modifier.
La chaîne de caractères avec laquelle je travaille ressemble à ceci :
19;#John Smith;#17;#Ben Reynolds;#1;#Terry Jackson
Je dois remplacer les numéros et ; #
les caractères avec un ,
. Par exemple, le texte ci-dessus deviendrait :
John Smith, Ben Reynolds, Terry Jackson
Je sais qu'une fonction récursive de chaîne est nécessaire, probablement en utilisant substring et translate, mais je ne sais pas trop par où commencer.
Quelqu'un a-t-il des conseils à donner pour résoudre ce problème ? Voici ce que j'ai commencé à faire :
<xsl:template name="TrimMulti">
<xsl:param name="FullString" />
<xsl:variable name="NormalizedString">
<xsl:value-of select="normalize-space($FullString)" />
</xsl:variable>
<xsl:variable name="Hash">#</xsl:variable>
<xsl:choose>
<xsl:when test="contains($NormalizedString, $Hash)">
<!-- Do something and call TrimMulti -->
</xsl:when>
</xsl:choose>
</xsl:template>