Re: [xsl] Splitting string

Subject: Re: [xsl] Splitting string
From: "Rui Alberto L." Gonçalves <rui-l-goncalves@xxxxxxxxxxxxx>
Date: Tue, 03 Aug 2004 10:46:29 +0100
Hi Mukul,
thanks a lot for your help.  It works perfectly! Yesss... :-)


On Tue, 2004-08-03 at 06:15, Mukul Gandhi wrote:
> Hi Rui,
>   Please try this XSL. It uses a recursive template.
>
> <?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="/root">
>    <xsl:call-template name="tokenise">
>      <xsl:with-param name="str" select="string" />
>      <xsl:with-param name="delim" select="'/'" />
>      <xsl:with-param name="prev" select="''" />
>    </xsl:call-template>
> </xsl:template>
>
> <xsl:template name="tokenise">
>    <xsl:param name="str" />
>    <xsl:param name="delim" />
>    <xsl:param name="prev" />
>
>    <xsl:choose>
>      <xsl:when
> test="substring-after(substring-after($str,$delim),$delim)
> != ''">
>        <xsl:value-of select="$prev" /><xsl:value-of
> select="$delim" /><xsl:value-of
> select="substring-before(substring-after($str,$delim),$delim)"
> />
>        <xsl:text>&#xA;</xsl:text>
>        <xsl:call-template name="tokenise">
>          <xsl:with-param name="str"
>
select="concat($delim,substring-after(substring-after($str,$delim),$delim))"
> />
>          <xsl:with-param name="delim" select="$delim"
> />
>          <xsl:with-param name="prev"
>
select="concat($prev,$delim,substring-before(substring-after($str,$delim),$de
lim))"
> />
>        </xsl:call-template>
>      </xsl:when>
>      <xsl:when
> test="substring-after(substring-after($str,$delim),$delim)
> = ''">
>        <xsl:value-of select="$prev" /><xsl:value-of
> select="$str" />
>      </xsl:when>
>    </xsl:choose>
> </xsl:template>
>
> </xsl:stylesheet>
>
> for e.g. when it is applied to XML
> <?xml version="1.0"?>
> <root>
>   <string>/this/is/a/test</string>
> </root>
>
> it produces output -
> /this
> /this/is
> /this/is/a
> /this/is/a/test
>
> Regards,
> Mukul
>
> --- "Rui Alberto L. Gonalves"
> <rui-l-goncalves@xxxxxxxxxxxxx> wrote:
>
> > Hi all,
> > I have a string like:
> > /this/is/a/test
> >
> > and I need to create a template that will output:
> > /this
> > /this/is
> > /this/is/a
> > /this/is/a/test
> >
> > I think this is not so simple as it looks at first
> > glance.
> > Does anyone have an idea how to solve this problem?
> > Thanks for any help.
> >
> > Rui
> > --
> > Rui Alberto L. Gonalves
> > <rui-l-goncalves@xxxxxxxxxxxxx>
> > PT Inovao
>
>
>
>
> __________________________________
> Do you Yahoo!?
> New and Improved Yahoo! Mail - Send 10MB messages!
> http://promotions.yahoo.com/new_mail
--
Rui Alberto L. GonC'alves <rui-l-goncalves@xxxxxxxxxxxxx>
PT InovaC'C#o

Current Thread