|
Subject: Re: [xsl] lastIndexOf('char') and XSLT string functions From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 15 Feb 2001 09:59:12 +0000 |
Hi Troadec,
> i'm looking for a xslt method to identify the last iteration of a
> char into a string. For example, to extract automatically the name
> of the html page into the url.
>
> string : "h ttp://www.thesite.com/directory1/dir2/dir3../pageindex.htm"
>
> there are the functions substrings-before() et substring-after(),
> but they work on the first occurence of the marker-string. Is there
> a Xslt function which gives the last occurence of a marker-string
> (like lastIndexOf('/',"string")) into a string?
No, there isn't.
You can achieve what you want through recursion. Walk through the
string, taking bits off the front of it until you get to a string
which has no '/' in it whatsoever.
<!-- define a lastIndexOf named template -->
<xsl:template name="lastIndexOf">
<!-- declare that it takes two parameters - the string and the char -->
<xsl:param name="string" />
<xsl:param name="char" />
<xsl:choose>
<!-- if the string contains the character... -->
<xsl:when test="contains($string, $char)">
<!-- call the template recursively... -->
<xsl:call-template name="lastIndexOf">
<!-- with the string being the string after the character
-->
<xsl:with-param name="string"
select="substring-after($string, $char)" />
<!-- and the character being the same as before -->
<xsl:with-param name="char" select="$char" />
</xsl:call-template>
</xsl:when>
<!-- otherwise, return the value of the string -->
<xsl:otherwise><xsl:value-of select="$string" /></xsl:otherwise>
</xsl:choose>
</xsl:template>
To get the filename of a URL held in the URL child of the current
node, you can call this template like:
<xsl:call-template name="lastIndexOf">
<xsl:with-param name="string" select="URL" />
<xsl:with-param name="char" select="/" />
</xsl:call-template>
It's pretty verbose, but I'm afraid that's the only way to do it in
XSLT 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] lastIndexOf('char') and XSLT , Troadec Pascal | Thread | RE: [xsl] lastIndexOf('char') and X, Troadec Pascal |
| RE: [xsl] Stopping Saxon searching , Michael Kay | Date | Re: [xsl] "expected markup declarat, Jeni Tennison |
| Month |