|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: How to use for-each to get comma searated list?
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!
My reference for using the "end()" function is from Microsoft's own
documentation ... I hadn't seen the function before and I only looked when
you posted your question.
Below this example I have an example conforming to
http://www.w3.org/TR/1998/WD-xsl-19980818 that seems to work just fine.
===============================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:stylesheet>
===============================8<==============================
Restricting oneself to http://www.w3.org/TR/1998/WD-xsl-19980818, the
following works just fine:
===============================8<==============================
D:\temp\xslcomma>type test.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns="http://www.w3.org/TR/REC-html40"
result-ns="">
<xsl:template match="/Doc"> <!-- first prepare commentary around list -->
<BODY>
<xsl:text>valueList="</xsl:text>
<xsl:for-each select="Section/Foo">
<xsl:process select="Value"/>
</xsl:for-each>
<xsl:text>"</xsl:text>
</BODY>
</xsl:template>
<!-- no punctuation after last (same as if only one in list) -->
<xsl:template match="Section[last-of-type()]/Foo/Value" >
<xsl:process-children/>
</xsl:template>
<!-- when more than one in list, punctuation after others -->
<xsl:template match="Section/Foo/Value" >
<xsl:process-children/>
<xsl:text>,</xsl:text>
</xsl:template>
</xsl:stylesheet>
D:\temp\xslcomma>type test1.xml
<?xml version="1.0"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<Doc>
<Section>
<Foo><Value>3.75</Value></Foo>
</Section>
</Doc>
D:\temp\xslcomma>call xsl test1.xml test.xsl test1.htm
D:\temp\xslcomma>type test1.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<BODY>valueList="3.75"</BODY>
D:\temp\xslcomma>type test2.xml
<?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>
</Doc>
D:\temp\xslcomma>call xsl test2.xml test.xsl test2.htm
D:\temp\xslcomma>type test2.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<BODY>valueList="3.75,2.25"</BODY>
D:\temp\xslcomma>type test3.xml
<?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>
D:\temp\xslcomma>call xsl test3.xml test.xsl test3.htm
D:\temp\xslcomma>type test3.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<BODY>valueList="3.75,2.25,1.61"</BODY>
D:\temp\xslcomma>
===============================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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








