Hi all,
I am having bit of a diffilculty with XSLT coding in BizTalk Map.
I have a Input message as follows extracted using SQL adapter ;-
<RootNode><ArrayOfRecord><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record></ArrayOfRecord></RootNode>
Which I want split based on value of 'Element1' i.e. something similar to following ;-
Output file 1 :-<RootNode><ArrayOfRecord><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record></ArrayOfRecord></RootNode> Output file 2 :-<RootNode><ArrayOfRecord><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record></ArrayOfRecord></RootNode>
I have created xslt as ;-
<xsl:key name="k1" match="Element1" use="."/><xsl:template match="/"><xsl:apply-templates select="RootNode/ArrayOfRecord/Record/Element1[generate-id() = generate-id(key('k1', .)[1])]" /></xsl:template><xsl:template match="Element1"><RootNode><ArrayOfRecord><xsl:variable name="currentElement1" select="."/><xsl:for-each select="key('k1', $currentElement1)"><Record><Element1><xsl:value-of select="$currentElement1"/></Element1><Element2><xsl:value-of select="../Element2/text()"/></Element2><Record></xsl:for-each></ArrayOfRecord></RootNode>
But this XSLT is producing output as follows ;-
<RootNode><ArrayOfRecord><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record><Record><Element1>ABCD</Element1><Element2>INR</Element2></Record></ArrayOfRecord></RootNode><RootNode><ArrayOfRecord><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record><Record><Element1>WXYZ</Element1><Element2>INR</Element2></Record></ArrayOfRecord></RootNode>
How do I split this output message into two ? Please help.
XSLT version is 1.0