[Home] [By Thread] [By Date] [Recent Entries]

Subject: Re: xml to xml mapping - how to combine two groups
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 8 Jan 2008 15:32:11 GMT
<x>
<LIST_GROUP_A>
<GROUP_A>
<COLOR>red</COLOR>
</GROUP_A>
</LIST_GROUP_A>
<LIST_GROUP_B>
<GROUP_B>
<SHAPE>round</SHAPE>
</GROUP_B>
<GROUP_B>
<SHAPE>square</SHAPE>
</GROUP_B>
</LIST_GROUP_B>
</x>



<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="x">
 <LIST_COMBINED>
   <xsl:variable name="a" select="LIST_GROUP_A/*"/>
   <xsl:variable name="b" select="LIST_GROUP_B/*"/>
   <xsl:for-each select="$a|$b[position()&gt;count($a)]">
     <xsl:variable name="p" select="position()"/>
   <COMBINED>
     <xsl:copy-of select="$a[$p]/*|$b[$p]/*"/>
   </COMBINED>
   </xsl:for-each>
 </LIST_COMBINED>
</xsl:template>

</xsl:stylesheet>



$ saxon map.xml map.xsl
<?xml version="1.0" encoding="utf-8"?>
<LIST_COMBINED>
   <COMBINED>
      <COLOR>red</COLOR>
      <SHAPE>round</SHAPE>
   </COMBINED>
   <COMBINED>
      <SHAPE>square</SHAPE>
   </COMBINED>
</LIST_COMBINED>

Current Thread
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member