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>
</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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Splitting string, Mukul Gandhi | Thread | Re: [xsl] Splitting string, Dimtre Novatchev |
Re: [xsl] Copying css file to desti, Kaarle Kaila | Date | Re: [xsl] Checking if node has data, Xsl List |
Month |