Re: [xsl] finding the last element with attribute

Subject: Re: [xsl] finding the last element with attribute
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Mon, 19 Feb 2007 14:54:16 +0000
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