[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: RE: [xsl] tokenize() a string and then create a node-set
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 1 Jun 2007 15:42:11 +0100

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