Fonction substring-before() | |
Renvoie la sous-chaîne du premier argument qui précède la première occurrence du second argument dans le premier argument. Si le second argument ne figure pas dans le premier argument, la fonction substring-before() renvoie une chaîne vide. | |
Entrées | |
Deux chaînes. La première chaîne représente la chaîne à rechercher, et la second chaîne représente la chaîne à rechercher dans la première chaîne. |
|
Sortie | |
La portion du premier argument qui précède la première occurrence du second argument. Si le second argument ne figure pas dans le premier argument, la fonction renvoie une chaîne vide. |
|
Définie dans | |
XPath section 4.2, Fonctions Chaîne. |
|
Exemple | |
La feuille de style utilise le modèle nommé replace-substring. Elle transmet trois arguments au modèle replace-substring : la chaîne originale, la sous-chaîne à rechercher dans la chaîne originale et la sous-chaîne qui doit remplacer la sous-chaîne cible dans la chaîne originale. Le modèle replace-substring utilise largement les fonctions contains(), substring-after() et substring-before(). L'exemple de feuille de style est le suivant. Elle remplace toutes les occurrences de World par la chaîne "Mundo" : <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:variable name="test"> <xsl:call-template name="replace-substring"> <xsl:with-param name="original">Hello World!</xsl:with-param> <xsl:with-param name="substring">World</xsl:with-param> <xsl:with-param name="replacement">Mundo</xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:value-of select="$test"/> </xsl:template> <xsl:template name="replace-substring"> <xsl:param name="original"/> <xsl:param name="substring"/> <xsl:param name="replacement" select="''"/> <xsl:variable name="first"> <xsl:choose> <xsl:when test="contains($original, $substring)"> <xsl:value-of select="substring-before($original, $substring)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$original"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="middle"> <xsl:choose> <xsl:when test="contains($original, $substring)"> <xsl:value-of select="$replacement"/> </xsl:when> <xsl:otherwise> <xsl:text> </xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="last"> <xsl:choose> <xsl:when test="contains($original, $substring)"> <xsl:choose> <xsl:when test="contains(substring-after($original, $substring), $substring)"> <xsl:call-template name="replace-substring"> <xsl:with-param name="original"> <xsl:value-of select="substring-after($original, $substring)"/> </xsl:with-param> <xsl:with-param name="substring"> <xsl:value-of select="$substring"/> </xsl:with-param> <xsl:with-param name="replacement"> <xsl:value-of select="$replacement"/> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="substring-after($original, $substring)"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:text> </xsl:text> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="concat($first, $middle, $last)"/> </xsl:template> </xsl:stylesheet> La feuille de style produit les résultats suivants, peu importe le document XML utilisé comme entrée : Hello Mundo! |