[xsl] Re: Method for delimiting template results

Subject: [xsl] Re: Method for delimiting template results
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Wed, 5 Mar 2003 22:53:39 +0100
Hi Ted,

The following transformation produces the wanted result. Note the use
position().

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

  <xsl:output method="text" />
  <xsl:strip-space elements="*"/>

     <xsl:template match="/">
       array(<xsl:apply-templates/>)
     </xsl:template>

     <xsl:template match="input[@type = 'checkbox']">
       <xsl:text>"</xsl:text>
       <xsl:value-of select="@name" />
       <xsl:text>"</xsl:text>
       <xsl:if test="not(position() = last())">,</xsl:if>
     </xsl:template>

</xsl:stylesheet>

When applied on this source.xml:

<t>
  <input type="checkbox" name="first"/>
  <input type="checkbox" name="second"/>
  <input type="checkbox" name="third"/>
</t>

The result is:

       array("first","second","third")



=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL


"Ted Stresen-Reuter" <tedmasterweb@xxxxxxx> wrote in message
news:3B94301D-4F4E-11D7-92A9-00039315D01C@xxxxxxxxxx
> Hi,
>
> Periodically I have a need to delimit the output from a template.
>
> In PHP I push all the variables onto an array and then "join" them with
> a ", " into a string. Works great.
>
> In XSLT I would start by using the following:
>
>      <xsl:template match="/">array(<xsl:apply-templates
> />)</xsl:template>
>      <xsl:template match="input[@type = 'checkbox']">"<xsl:value-of
> select="@name" />"</xsl:template>
>
> The problem here, however, is that the result would consist of:
> array("fist""second""third") and what I want is:
> array("first","second","third")
>
> Any suggestions on how to do that in XSLT?
>
> Ted
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>




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


Current Thread