| substring-before()-Funktion | |
| Diese Funktion liefert den Teil-String des ersten Arguments vor dem ersten Auftreten des zweiten Arguments im ersten Argument. Wenn das zweite Argument im ersten nicht vorkommt, gibt die Funktion substring-before() 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 vor 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! |
|