Subject: Re: [xsl] remove duplicates in each big entry From: Rudolf P. Weinmann <rudolf.weinmann@xxxxxxxxxxxx> Date: Fri, 27 May 2005 08:34:11 +0200 |
I use the Muenchenian method (see http://www.jenitennison.com/xslt/grouping/index.html). Since the text of <value> should be unique only within its parent element <item>, I use the parent's unique id as part of the index built by xsl:key. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="uniqueWithinParent" match="/root/item/value" use="concat(generate-id(parent::item),.)"/> <xsl:template match="/|*"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="item"> <xsl:copy> <xsl:apply-templates select="value[count(.|key('uniqueWithinParent',concat(generate-id(current()), .))[1])=1]"/> </xsl:copy> </xsl:template> </xsl:stylesheet> Instead of <xsl:apply-templates select="value[count(.|key('uniqueWithinParent',concat(generate-id(current()), .))[1])=1]"/> you can use <xsl:apply-templates select="value[generate-id()=generate-id(key('uniqueWithinParent',concat(gener ate-id(current()),.))[1])]"/> The first method uses the fact, that node sets don't hold duplicates and therefore the union of a node and the first node returned by the key() function is 1 if it is the same node. The second method compares the unique id of <value> with the unique id of the first node returned by the key() function. Rudolf P. Weinmann On Thu, 26 May 2005 21:08:32 +0000, you wrote: >I don't find any example for my doubt about xsl, so i post my question. >Supose that i have the next xml: > ><root> ><item> ><value>foo</value> ><value>foo</value> ><value>bar</value> ></item> ><item> ><value>foo</value> ><value>cat</value> ><value>cat</value> ></item> ></root> > >and i would like to create a xml like this: > ><root> ><item> ><value>foo</value> ><value>bar</value> ></item> ><item> ><value>foo</value> ><value>cat</value> ></item> ></root> > >As you can see, i want to remove all duplicates in each entry <item>, not in >all document. >The examples that i find, is about all document, not about my question. >What lines i put in my xsl? > > >Thanks, >psc > >_________________________________________________________________ >Express yourself instantly with MSN Messenger! Download today it's FREE! >http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] remove duplicates in each big, Pedro Sá da Costa | Thread | [xsl] Date expressions in XSLT 1.0, Adrien Lazzaro |
[xsl] XSL-FO footer contd. sign app, Praful Asher | Date | [xsl] How do I get a SUM of the str, Bovy, Stephen J |
Month |