RE: [xsl] finding the last element with attribute

Subject: RE: [xsl] finding the last element with attribute
From: "Robert Walpole" <robert.walpole@xxxxxxxxxxxx>
Date: Mon, 19 Feb 2007 16:02:32 -0000
I am trying to output the string value of the option elements that have
a selected="selected" attribute and separate the output with commas. I
don't want a comma after the last string value that I output. If all of
the option elements had a selected="selected" attribute then I would
expect to get: "East Devon, Exeter, Torbay" - which I do. If only the
first two had a selected="selected" attribute then I would expect to get
"East Devon, Exeter" but instead I get "East Devon, Exeter," so I need
to loose that comma at the end. I need a test to find the last option
element that has a selected="selected" attribute.

Thanks
Rob


> -----Original Message-----
> From: Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx]
> Sent: 19 February 2007 14:54
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] finding the last element with attribute
>
>
> On 2/19/07, Robert Walpole <robert.walpole@xxxxxxxxxxxx> wrote:
> > Hi,
> >
> > I am stuck on a small but annoying problem. I have broken
> it down into a
> > couple of test files, the xml as follows...
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <areaserved>
> >     <district>
> >         <option>East Devon</option>
> >         <option selected="selected" >Exeter</option>
> >         <option>Torbay</option>
> >     </district>
> > </areaserved>
> >
> > ...and the xslt as follows...
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > version="2.0">
> >     <xsl:template match="/">
> >         <xsl:for-each select="areaserved/district/option">
> >             <xsl:if test="./@selected = 'selected'">
> >                 <xsl:value-of select="."/>
> >                 <xsl:if test="position() != last()">,&#160;</xsl:if>
> >             </xsl:if>
> >         </xsl:for-each>
> >     </xsl:template>
> > </xsl:stylesheet>
> >
> > Basically, in the xml any of the option elements can have a
> "selected"
> > attribute with a "selected" value. When I transform the xml
> I only want
> > to put out a comma if it is not the last option with a
> > selected="selected" attribute. At the moment it always puts
> out a comma
> > unless it is actually the last option (i.e. Torbay). So with the xml
> > file as it is it will put out "Exeter,"
>
> Clear as mud, I'm afraid.  Expected output is always really
> helpful here.
>
> It's good to see local government using XSLT by the way....

Current Thread