Subject: Re: [xsl] First element with given attribute values From: Mukul Gandhi <mukulgandhi2003@xxxxxxxxxxx> Date: Sun, 11 Apr 2004 15:29:33 +0100 (BST) |
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/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] First element with given attr, Nicolas Mailhot | Thread | RE: [xsl] First element with given , Andreas L. Delmelle |
[xsl] First element with given attr, Nicolas Mailhot | Date | RE: [xsl] First element with given , Andreas L. Delmelle |
Month |