RE: finding the last element with attribute
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: 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()">, </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....
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