|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: First element with given attribute values
Hi Nicolas,
This is a grouping problem. The following XSL is one
possible solution -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>
<xsl:key name="x" match="foo"
use="concat(@name,'+',@version)"/>
<xsl:template match="/root">
<root>
<xsl:for-each select="foo">
<xsl:if test="generate-id(.) =
generate-id(key('x', concat(@name,'+',@version))[1])">
<xsl:copy-of select="." />
</xsl:if>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
When the above XSL is applied to the XML -
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo name="a" version="1"/>
<foo name="b" version="1"/>
<foo name="a" version="1"/>
<foo name="b" version="2"/>
<foo name="c" version="1"/>
<foo name="b" version="1"/>
<foo name="b" version="1"/>
</root>
, the output received is -
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo name="a" version="1" />
<foo name="b" version="1" />
<foo name="b" version="2" />
<foo name="c" version="1" />
</root>
Regards,
Mukul
--- Nicolas Mailhot <Nicolas.Mailhot@xxxxxxxxxxx>
wrote: > Hi,
>
> I find that very often I end up with lists of
> elements like:
>
> <foo name="a" version="1"/>
> <foo name="b" version="1"/>
> <foo name="a" version="1"/>
> <foo name="b" version="2"/>
> <foo name="c" version="1"/>
> <foo name="b" version="1"/>
> <foo name="b" version="1"/>
>
> Which I need to trim, keeping only the first
> element with an unique
> attibute value, or unique attribute values. For
> example, if I only
> wanted the first element with an unique name,version
> pair this would
> give :
>
> <foo name="a" version="1"/>
> <foo name="b" version="1"/>
> <foo name="b" version="2"/>
> <foo name="c" version="1"/>
>
> Is there a clean way to do it ?
>
> <xsl:template match="foo[@name=./@name and
> @version=./@version][1]">
>
> only matches the first
>
> <foo name="a" version="1"/>
>
> Cheers,
>
> --
> Nicolas Mailhot
>
> ATTACHMENT part 2 application/pgp-signature
name=signature.asc
________________________________________________________________________
Yahoo! India Matrimony: Find your partner online. http://yahoo.shaadi.com/india-matrimony/
|
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
|

Cart








