xsl-list
[Top] [All Lists]

Re: [xsl] Removing duplicates based on set of identifiers

2008-09-15 04:31:37
Hi,

You can use xs:for-each-group. For example if you join the tag ids as the grouping key then you will get a stylesheet like below:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:template match="doc">
<xsl:for-each-group select="odo" group-by="string-join(tag/@id, '-')">
            <xsl:copy-of select="."/>
        </xsl:for-each-group>
    </xsl:template>
</xsl:stylesheet>

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Kolda, Marcin wrote:
Hi,

I have problem with removing group duplicates. I want to remove duplicates, 
which contains childs with identical ids.
I'm looking for solution that does that using XSLT 2.0. Example of input and 
output is below.

Input:
<doc>
            <odo>
                        <tag id="1"/>
                        <tag id="2"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="1"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="2"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="1"/>
                        <tag id="2"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="1"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="3"/>
            </odo>
</doc>

Output:
<doc>
            <odo>
                        <tag id="1"/>
                        <tag id="2"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="1"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="2"/>
                        <tag id="3"/>
            </odo>
            <odo>
                        <tag id="3"/>
            </odo>
</doc>

Do you have any ideas?

Marcin

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>