contains()-Funktion |
Diese Funktion ermittelt, ob der String im ersten Argument das zweite Argument enthält.
Eingaben
Zwei Strings. Wenn der erste String den zweiten enthält, gibt die Funktion den Booleschen Wert true zurück.
Ausgabe
Der Boolesche Wert true, wenn das erste Argument das zweite enthält, andernfalls false.
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!