Re: [xsl] Breaking a string into repeated elements

Subject: Re: [xsl] Breaking a string into repeated elements
From: Bryan Schnabel <bryan.schnabel@xxxxxxxxxxxxx>
Date: Fri, 7 Jun 2002 14:37:56 -0700 (PDT)
This kind of problem is pretty easy to find in the
archives.  Once you get past the variety of possible
delimiters, it's pretty straight-forward.

This is one way:

<xsl:template match="ListOfItems">
 <xsl:variable name="SpaceOrCommaOrBoth"
select="normalize-space(translate(text(),',',' '))"/>
 <ListofItems>
  <xsl:call-template name="Chop">
   <xsl:with-param name="SpaceOrCommaOrBoth"
select="$SpaceOrCommaOrBoth"/>
  </xsl:call-template>
 </ListofItems>
</xsl:template>

<xsl:template name="Chop">
 <xsl:param name="SpaceOrCommaOrBoth"/>
 <xsl:choose>
  <xsl:when test="contains($SpaceOrCommaOrBoth,' ')">
   <xsl:call-template name="MakeItem">
    <xsl:with-param name="ItemStff"
select="substring-before($SpaceOrCommaOrBoth,' ')"/>
   </xsl:call-template>
   <xsl:call-template name="Chop">
    <xsl:with-param name="SpaceOrCommaOrBoth"
select="substring-after($SpaceOrCommaOrBoth,' ')"/>
   </xsl:call-template>
  </xsl:when>
  <xsl:otherwise>
   <xsl:call-template name="MakeItem">
    <xsl:with-param name="ItemStff"
select="$SpaceOrCommaOrBoth"/>
   </xsl:call-template>
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

<xsl:template name="MakeItem">
 <xsl:param name="ItemStff"/>
 <item>
  <xsl:value-of select="$ItemStff"/>
 </item>
</xsl:template>


Bryan

--- jon budar-danoff <jbudardanoff@xxxxxxxxx> wrote:

> The construct in question looks like this:
> 
> <ListOfItems>10, 20, 30, 31</ListOfItems>
> 
> and I want to make it look like this:
> 
> <ListOfItems howMany="4">
>     <Item>10</Item>
>     <Item>20</Item>
>     <Item>30</Item>
>     <Item>31</Item>
> </ListOfItems>
> 
> Note that the existing <ListOfItems> may be
> delimited by either spaces,
> commas, or commas and spaces.


__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread