XSL Template to count substrings
Here is a template that can be used to count the number of substrings within a particular string. It takes two parameters.
string: which is the large string we are search throughsubstr: which is the substring we are searching for
<xsl:template name="substring-count"> <xsl:param name="string"/> <xsl:param name="substr"/> <xsl:choose> <xsl:when test="contains($string, $substr) and $string and $substr"> <xsl:variable name="rest"> <xsl:call-template name="substring-count"> <xsl:with-param name="string" select="substring-after($string, $substr)"/> <xsl:with-param name="substr" select="$substr"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="$rest + 1"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose></xsl:template>To use this template, use the call-template element:
<xsl:call-template name="substring-count"> <xsl:with-param name="string" select="'mary had a little lamb'" /> <xsl:with-param name="substr" select="'lamb'" /></xsl:call-templat>