substring-after()-Funktion | |
Diese Funktion liefert den Teil-String des ersten Arguments nach dem ersten Auftreten des zweiten Arguments im ersten Argument. Wenn das zweite Argument im ersten nicht vorkommt, gibt die Funktion substring-after() einen leeren String zurück. | |
Eingaben | |
Zwei Strings. Der erste String ist der String, der durchsucht werden soll und der zweite ist der String, nach dem im ersten String gesucht werden soll. |
|
Ausgabe | |
Der Teil des ersten Arguments, der nach dem ersten Auftreten des zweiten Arguments vorkommt. Wenn das zweite Argument im ersten nicht vorkommt, gibt die Funktion einen leeren String zurück. |
|
Definition | |
XPath-Abschnitt 4.2, Zeichenkettenfunktionen. |
|
Beispiel | |
Das folgende Stylesheet verwendet die benannte Vorlage replace-substring. Es übergibt drei Argumente an die Vorlage replace-substring: den ursprünglichen String, den Teil-String, nach dem im ursprünglichen String gesucht werden soll und den Teil-String, der im Ziel-String den ursprünglichen Teil-String ersetzen soll. Die Vorlage replace-substring verwendet die Funktionen contains(), substring-after() und substring-before(). Hier das Beispiel-Stylesheet, das alle Vorkommnisse von World durch den String "Mundo" ersetzt: <?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> Das Stylesheet erzeugt die folgenden Ergebnisse, und zwar unabhängig vom verwendeten XML-Eingabedokument: Hello Mundo! |