XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Ram GudavalliSubject: Combine Duplicates
Author: Ram Gudavalli
Date: 29 Sep 2004 05:55 PM
Hi,

I am new to XSLT and I am having trouble combining child elements when
the parents attributes are same.

Sample:

<A>
<B id="xxxx">
<C val="aa">
</B>
<B id="yyyy"
<C val="bb">
</B
<B id="xxxx">
<C val="cc">
</B
</A>

I need the output as,

<A>
<B id="xxxx">
<C val="aa">
<C val="cc">
</B>
<B id="yyyy">
<C val="bb">
</B>
</A>

Please help me out here.
Thanks.

Postnext
Ivan PedruzziSubject: Combine Duplicates
Author: Ivan Pedruzzi
Date: 29 Sep 2004 07:33 PM
Hi Ram,

This a tipical grouping problem that ca be solved suign the key function
The following XSLT does what you are looking for

I hope this helps
Ivan


<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="id" match="/*/*" use="@id"/>
<xsl:key name="children" match="/*/*/*" use="../@id"/>

<xsl:template match="/">
<xsl:for-each select="*[1]"> <!--this is for the root only-->

<xsl:copy> <!-- copy root node and his attributes -->
<xsl:copy-of select="@*"/>

<!--
- group the B elements by attribute "id"
- eliminate duplicates
- sort by attribute "id"
-->
<xsl:for-each select="*[generate-id() = generate-id(key('id', @id)[1])]">
<xsl:sort select="@id"/>

<!-- copy children nodes C using the attribute id as key -->
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="key('children', @id)"/>
</xsl:copy>

</xsl:for-each>

</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Posttop
Ram GudavalliSubject: Combine Duplicates
Author: Ram Gudavalli
Date: 30 Sep 2004 09:50 AM
Thanks a lot Ivan. I appreciate your help.

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.