I need to merge the two complex elements nodes through xslt, based on the attribute value i.e for eg when id=1 its respective name value elements need to be merged. so on for id=2, 3 ..etc
<?xml version="1.0" encoding="UTF-8"?>
<xrefStore>
<xrefData>
<entityData>
<entry id="1">
<keyValue name="A" value=" "/>
<keyValue name="B" value=" "/>
<keyValue name="C" value=" "/>
</entry>
<entry id="2">
<keyValue name="A" value=" "/>
<keyValue name="B" value=" "/>
<keyValue name="c" value=" "/>
<keyValue name="D" value=" "/>
<keyValue name="E" value=" "/>
</entry>
<entry id="1">
<keyValue name="D" value=" "/>
<keyValue name="E" value=" "/>
</entry>
</xrefStore>
</xrefData>
The final output should be as below,
<?xml version="1.0"?>
<root>
<set id="1">
<nameValuePair>
<name>A</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>B</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>C</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>D</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>E</name>
<value> </value>
</nameValuePair>
</set>
<set id="2">
<nameValuePair>
<name>A</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>B</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>C</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>D</name>
<value> </value>
</nameValuePair>
<nameValuePair>
<name>E</name>
<value> </value>
</nameValuePair>
</set>
</root>
i have tried the below code, but it does not merge based on id.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<root>
<xsl:for-each select="xrefStore/xrefData/entityData/entity/entry">
<set >
<xsl:attribute name="id">
<xsl:value-of select="current()/@id" />
</xsl:attribute>
<xsl:for-each select="current()/keyValue">
<nameValuePair>
<name>
<xsl:value-of select="current()/@name" />
</name>
<value>
<xsl:value-of select="current()/@value" />
</value>
</nameValuePair>
</xsl:for-each>
</set>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Any kind of help is appreciated.
i found similar answer in here, Merge XML nodes using XSLT
but i did not understand the concept of their implementation.