xsl-list
[Top] [All Lists]

[xsl] combining common data within groups.

2008-11-03 15:06:12
This is a new area for me. Need to eliminate duplicates that occur
within sub-groups.

XML Input example:
<?xml version="1.0"?>
<root>
        <boxes>
                <box_sizes>
                        <value>square</value>
                </box_sizes>
                <box_sizes>
                        <value>square</value>
                </box_sizes>
        </boxes>
        <boxes>
                <box_sizes>
                        <value>round</value>
                </box_sizes>
                <box_sizes>
                        <value>square</value>
                </box_sizes>
        </boxes>
        <color1>red</color1>
        <color2>blue</color2>
</root>


Desired output:
<?xml version="1.0" encoding="utf-8"?>
<root>
        <color1>red</color1>
        <boxes>
                <box_sizes>
                        <value>square</value>
                </box_sizes>
        </boxes>
        <boxes>
                <box_sizes>
                        <value>round</value>
                        <value>square</value>
                </box_sizes>
        </boxes>
</root>


As you can see, I want to eliminate duplicate occurances of
<box_sizes/value> within  the <boxes> group. 


Here's what I'm trying to do, but it's not working.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        <xsl:key name="uniqueWithinParent" match="//value"
use="concat(generate-id(parent::box_sizes),.)"/>
        <xsl:template match="/">
                <root>
                        <color1>
                                <xsl:value-of select="root/color1"/>
                        </color1>
                        <xsl:for-each select="root/boxes">
                                <boxes>
                                        <box_sizes>
                                                <xsl:for-each
select="box_sizes/value">
                                                        <value>
        
<xsl:value-of select="value"/>
                                                        </value>
                                                </xsl:for-each>
                                        </box_sizes>
                                </boxes>
                        </xsl:for-each>
                </root>
        </xsl:template>
</xsl:stylesheet>

Thanks so much for any help!!!


--~------------------------------------------------------------------
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>