RE: [xsl] Re: Method for delimiting template results

Subject: RE: [xsl] Re: Method for delimiting template results
From: "Conal Tuohy" <conalt@xxxxxxxxxxxxxxx>
Date: Thu, 6 Mar 2003 11:34:58 +1300
Perhaps you could try:

<xsl:apply-templates select=".//input[@type='checkbox']"/> ?

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Ted
> Stresen-Reuter
> Sent: Thursday, 6 March 2003 11:06
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Re: Method for delimiting template results
> 
> 
> 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
> 
> 

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


Current Thread