Subject: RE: 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: 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
|