|
Subject: [xsl] Grouping and then more grouping From: Alex Muir <alex.g.muir@xxxxxxxxx> Date: Mon, 15 Aug 2011 21:45:07 +0000 |
I'm trying to group the identical groups by id together such that given
<group xml:id="MILHIS_Yes">
<name>Yes</name>
<group xml:id="MILHIS_Vehicles">
<name>Vehicles</name>
<group xml:id="MILHIS_Air">
<name>Air</name>
<group xml:id="MILHIS_Aeroplane">
<name>Aeroplane</name>
<item xml:id="MILHIS_Attack_Aircraft">
<name>Attack Aircraft</name>
</item>
</group>
</group>
</group>
</group>
<group xml:id="MILHIS_Yes">
<name>Yes</name>
<group xml:id="MILHIS_Vehicles">
<name>Vehicles</name>
<group xml:id="MILHIS_Air">
<name>Air</name>
<group xml:id="MILHIS_Aeroplane">
<name>Aeroplane</name>
<item xml:id="MILHIS_Bomber_Aircraft">
<name>Bomber Aircraft</name>
</item>
</group>
</group>
</group>
</group>
<group xml:id="MILHIS_Yes">
<name>Yes</name>
<group xml:id="MILHIS_Vehicles">
<name>Vehicles</name>
<group xml:id="MILHIS_Sea">
<name>Sea</name>
<group xml:id="MILHIS_Ship">
<name>Ship</name>
<item xml:id="MILHIS_Aircraft_Carrier">
<name>Aircraft Carrier</name>
</item>
</group>
</group>
</group>
</group>
I'll get a result that merges the like groups together and copies items
<group xml:id="MILHIS_Yes">
<name>Yes</name>
<group xml:id="MILHIS_Vehicles">
<name>Vehicles</name>
<group xml:id="MILHIS_Sea">
<name>Sea</name>
<group xml:id="MILHIS_Ship">
<name>Ship</name>
<item xml:id="MILHIS_Aircraft_Carrier">
<name>Aircraft Carrier</name>
</item>
</group>
</group>
<group xml:id="MILHIS_Air">
<name>Air</name>
<group xml:id="MILHIS_Aeroplane">
<name>Aeroplane</name>
<item xml:id="MILHIS_Attack_Aircraft">
<name>Attack Aircraft</name>
</item>
<item xml:id="MILHIS_Bomber_Aircraft">
<name>Bomber Aircraft</name>
</item>
</group>
</group>
</group>
</group>
I've written the following which groups the first level and played
around with getting something that moves to lower group levels as I
need however I'm not sure what to do to descend through each group
joining them together by id.
<xsl:template match="root">
<root>
<xsl:call-template name="CopyGroup"/>
</root>
</xsl:template>
<xsl:template name="CopyGroup">
<xsl:for-each-group select="group" group-by="@xml:id">
<group xml:id="{@xml:id}">
<xsl:copy-of select="current-group()/*"/>
</group>
</xsl:for-each-group>
</xsl:template>
Thoughts?
Regards
--
Alex Muir
Instructor | Program Organizer - University Technology Student Work
Experience Building
University of the Gambia
http://sites.utg.edu.gm/alex/
Low budget software development benefiting development in the Gambia,
West Africa
Experience of a lifetime, come to Gambia and Join UTSWEB -
http://sites.utg.edu.gm/utsweb/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Changing namespaces, David Carlisle | Thread | Re: [xsl] Grouping and then more gr, G. Ken Holman |
| Re: [xsl] Changing namespaces, David Carlisle | Date | Re: [xsl] Changing namespaces, Pradnya Gawade |
| Month |