Subject: RE: 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: 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
|