RE: [xsl] tokenize() a string and then create a node-set

Subject: RE: [xsl] tokenize() a string and then create a node-set
From: Mario Madunic <hajduk@xxxxxxxx>
Date: Fri, 1 Jun 2007 08:05:52 -0700
Thanks Michael and Brad,

Your help and insight is greatly appreciated.

Marijan Madunic

Quoting Michael Kay <mike@xxxxxxxxxxxx>:

> Yes, you can do 
> 
> <xsl:if test="position()=1">
>   <firstname><xsl:value-of select="."/></firstname>
> </xsl:if>
> 
> Alternatively,
> 
> <xsl:variable name="t" select="tokenize(...)"/>
> <first><xsl:value-of select="$t[1]"/></first>
> <xsl:for-each select="2 to count($t)-1">
>   <middle><xsl:value-of select="subsequence($t, ., 1)"/></middle>
> </xsl:for-each>
> <last><xsl:value-of select="$t[last()]"/></last>
> 
> Michael Kay
> http://www.saxonica.com/ 
> 
> > -----Original Message-----
> > From: hajduk@xxxxxxxx [mailto:hajduk@xxxxxxxx] 
> > Sent: 01 June 2007 15:21
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [xsl] tokenize() a string and then create a node-set
> > 
> > Haven't used the tokenize() function and just wanted a bit of insight.
> > 
> > Note, could create a called-template plus a user defined 
> > function(s) to do the following but want to see if there is 
> > an easier/other way to do it.
> > 
> > I want to take a string containing a person's name and break 
> > it apart based on a space. Then parse the result as follows. 
> > If position is first then <firstname>, if position is last 
> > then <lastname> else <midname>.
> > 
> > Can this be done using a <for-each select="tokenize($string, 
> > ' ')"> with a <choose>|<if> statement inside?
> > 
> > Any ideas will be greatly appreciated.
> > 
> > Marijan Madunic

Current Thread