[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
php delimiting input
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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.