[xquery-talk] XSL Question

Rajashekaraiah, Rashmi (HP-IT) rashmir at hp.com
Wed May 24 11:08:46 PDT 2006


Thanks, but in this where do I need to pass the //child 

<xsl:template name="split">
   <xsl:param name="input-string"/>
   <xsl:param name="separator"/>

   <xsl:if test="$input-string">
     <td><xsl:value-of
        select="substring-before($input-string, $separator)/></td>
     <xsl:call-template name="split">
       <xsl:with-param name="input-string"
         select="substring-after($input-string, $separator"/>
       <xsl:with-parma name="separator" select="$separator"/>
   </xsl:if>
</xsl:template>




-----Original Message-----
From: Raffaele Sena [mailto:raff at aromatic.org] 
Sent: Wednesday, May 24, 2006 9:17 AM
To: Rajashekaraiah, Rashmi (HP-IT)
Cc: talk at xquery.com
Subject: Re: [xquery-talk] XSL Question


since you posted this on the xquery forum I am assuming you are talking
about XPath 2.0 functionalities.

With XPath 2.0 you can use the fn:tokenize() function to split your
comma-separated list:

	fn:tokenize(//child, ',')

returns
	('name1', 'name2_pewe', 'name3')

If you want to be XSLT 1.0 - XPath 1.0 compliant you can write a
recursive function that uses fn:substring-before and fn:substring-after:

<xsl:template name="split">
   <xsl:param name="input-string"/>
   <xsl:param name="separator"/>

   <xsl:if test="$input-string">
     <td><xsl:value-of
        select="substring-before($input-string, $separator)/></td>
     <xsl:call-template name="split">
       <xsl:with-param name="input-string"
         select="substring-after($input-string, $separator"/>
       <xsl:with-parma name="separator" select="$separator"/>
   </xsl:if>
</xsl:template>

(I didn't really try this but it should be "almost" correct :)

-- Raffaele


Rajashekaraiah, Rashmi (HP-IT) wrote:
> Hi :
>  
> I have a XML which looks like :
> <root><child>name1,name2_pewe,name3</child></root>
>  
>  
> I want to write an xsl to trasnform this to html which should look 
> like <html> <body> <table> <tr><td>name1<td><td></td><td></td><tr>
> </table>
> <body>
> </html>
>  
> I dono how to write a split function in xslt. please help
>  
> Thanks,
> Rashmi
>  
> !DSPAM:4473c46a146357962374464!
> 
> 
> ----------------------------------------------------------------------
> --
> 
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
> 
> !DSPAM:4473c46a146357962374464!



More information about the talk mailing list