Subject: Re: [xsl] last index of... From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Mon, 12 Nov 2001 18:20:08 +0000 |
Hi Utah, > Is there a function in XSLT which obtains the position of the last > occurrence of a string within another string? No, there isn't. To get the substring after the last occurrence of a string, you need a recursive template, for example: <xsl:template name="substring-after-last"> <xsl:param name="string" /> <xsl:param name="delimiter" /> <xsl:choose> <xsl:when test="contains($string, $delimiter)"> <xsl:call-template name="substring-after-last"> <xsl:with-param name="string" select="substring-after($string, $delimiter)" /> <xsl:with-param name="delimiter" select="$delimiter" /> </xsl:call-template> </xsl:when> <xsl:otherwise><xsl:value-of select="$string" /></xsl:otherwise> </xsl:choose> </xsl:template> For example to get the extension of a file from its path you could use: <xsl:call-template name="substring-after-last"> <xsl:with-param name="string" select="$file" /> <xsl:with-param name="delimiter" select="'.'" /> </xsl:call-template> Getting the last index would be slightly more complicated, and it looks like you want to use it to get hold of the string after the last occurrence of something, so hopefully this is sufficient. [Note that the XQuery/XPath operators document contains an ends-with() function so it's possible that in XPath 2.0 if you wanted to *test* the value of the string after the last '.' to see if it was 'xml' then you could do: ends-with($file, '.xml') but that's just speculation at the moment.] I hope that helps, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] last index of..., Utah Ingersoll | Thread | Re: [xsl] last index of..., Steve . Ball |
RE: [xsl] Localising Submit/Clear b, Chris Bayes | Date | Re: [xsl] Localising Submit/Clear b, Jeni Tennison |
Month |