| contains() Function | |
| Determines if the first argument string contains the second. | |
| Inputs | |
|
Two strings. If the first string contains the second string, the function returns the boolean value true. |
|
| Output | |
|
The boolean value true if the first argument contains the second; false otherwise. |
|
| Defined in | |
|
XPath section 4.2, String Functions. |
|
| Example | |
|
This stylesheet uses the replace-substring named template. It passes three arguments to the replace-substring template: the original string, the substring to be searched for in the original string, and the substring to replace the target substring in the original string. The replace-substring template uses the contains(), substring-after(), and substring-before() functions extensively. Here is our sample stylesheet. It replaces all occurrences of World with the string "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>
The stylesheet produces these results, regardless of the XML document used as input: Hello Mundo! |
|