[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Re: Method for delimiting template results
Subject: Re: Re: Method for delimiting template results
From: Ted Stresen-Reuter <tedmasterweb@xxxxxxx>
Date: Wed, 5 Mar 2003 16:06:09 -0600
|
Thanks for the reply. Upon reflection, I realized that I had the
solution and then saw your email. However, I also realized that this
particular solution won't work if my checkbox elements are inside of a
TABLE element (and they are) because the context for the position() and
last() is the enclosing TD element.
Any suggestions on how I can "globalize" the context short of doing two
passes on the xml source (to reduce it to, say, just the FORM element)?
Ted
On Wednesday, March 5, 2003, at 03:53 PM, Dimitre Novatchev wrote:
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
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
RSS 2.0 |
|
Atom 0.3 |
|
|