Re: How to use for-each to get comma searated list?

Subject: Re: How to use for-each to get comma searated list?
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 02 Dec 1998 16:23:22 -0500
At 98/12/02 14:43 -0500, I wrote:
>At 98/12/02 12:43 -0500, Farrukh S. Najmi wrote:
>>I am trying to use the current version of XSL (ala IE5.0 beta2) to
>>format the values inside a XML element into a comma separated list. The
>>problem is that I cannot figure out how to not have a comma after the
>>last element in the list. Any help would be appreciated. 
>
>I can almost get you there, but I don't understand why
>IE5.0beta2(5.00.0910.1309) isn't completing the job for me.  I'll still
>work on it, but I thought I'd post these intermediate results in case
>someone sees what I'm doing wrong.  The script below will display the
>correct number of commas, but not the values!

Okay, I found the use of the "textnode()" function, so the following XML
file "test3.xml" and XSL script "test.xsl" successfully produce a comma
separated list.

==============================8<---------------------------------
<?xml version="1.0"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<Doc>
  <Section>
    <Foo><Value>3.75</Value></Foo>
  </Section>

  <Section>
    <Foo><Value>2.25</Value></Foo>
  </Section>

  <Section>
    <Foo><Value>1.61</Value></Foo>
  </Section>
</Doc>
==============================8<---------------------------------
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl";>

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

<xsl:template match="/Doc">     <!-- first prepare commentary around list -->
  <BODY>
       valueList="<xsl:apply-templates select="Section"/>"
  </BODY>
</xsl:template> 

                 <!-- when more than one in list, punctuation after others -->
<xsl:template match="Section">
   <xsl:apply-templates/>,</xsl:template> 

              <!-- no punctuation after last (same as if only one in list) -->
<xsl:template match="Section[end()]">
  <xsl:apply-templates/>
</xsl:template> 

<xsl:template match="Foo"><xsl:apply-templates/></xsl:template>

<xsl:template match="Value">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="textnode()">
  <xsl:get-value/></xsl:template> <!-- nl after get-value produces space -->

</xsl:stylesheet>
==============================8<---------------------------------


--
G. Ken Holman         mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.  http://www.CraneSoftwrights.com/s/
Box 266,                                V: +1(613)489-0999
Kars, Ontario CANADA K0A-2E0            F: +1(613)489-0995
Training:   http://www.CraneSoftwrights.com/s/schedule.htm
Resources: http://www.CraneSoftwrights.com/s/resources.htm
Shareware: http://www.CraneSoftwrights.com/s/shareware.htm


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


Current Thread