XSLT to form nested xml structure

Home Page Forums BizTalk 2004 – BizTalk 2010 XSLT to form nested xml structure

Viewing 0 reply threads
  • Author
    Posts
    • #25347

      Hi

      Missing nodes highlighted in yellow

       

      INPUT:

       

      <ns0:Root xmlns:ns0=http://EDIAD_POC_Mapping.EDIAD_HD>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_1</MOVE>

                  <TANKNO>TA01TNO001A</TANKNO>

                  <CHARGE>

                        <CCODE>CCODE_1</CCODE>

                        <TEXT>TEXT_1</TEXT>

                  </CHARGE>

                  <CHARGE>

                        <CCODE>CCODE_2</CCODE>

                        <TEXT>TEXT_2</TEXT>

                  </CHARGE>

            </Record>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_1</MOVE>

                  <TANKNO>TA02TNO002B</TANKNO>

                  <CHARGE>

                        <CCODE>CCODE_3</CCODE>

                        <TEXT>TEXT_3</TEXT>

                  </CHARGE>

                  <CHARGE>

                        <CCODE>CCODE_4</CCODE>

                        <TEXT>TEXT_4</TEXT>

                  </CHARGE>

            </Record>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_2</MOVE>

                  <TANKNO>TA03TNO003C</TANKNO>

                  <CHARGE>

                        <CCODE>CCODE_5</CCODE>

                        <TEXT>TEXT_5</TEXT>

                  </CHARGE>

                  <CHARGE>

                        <CCODE>CCODE_6</CCODE>

                        <TEXT>TEXT_6</TEXT>

                  </CHARGE>

            </Record>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_2</MOVE>

                  <TANKNO>TA04TNO004D</TANKNO>

                  <CHARGE>

                        <CCODE>CCODE_7</CCODE>

                        <TEXT>TEXT_7</TEXT>

                  </CHARGE>

                  <CHARGE>

                        <CCODE>CCODE_8</CCODE>

                        <TEXT>TEXT_8</TEXT>

                  </CHARGE>

            </Record>

      </ns0:Root>

       

      REQUIRED OUTPUT:

       

      <ns0:Root xmlns:ns0=http://EDIAD_POC_Mapping.EDIAD_HD>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_1</MOVE>

                  <TANK>

                        <TANKNO>TA01TNO001A</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_1</CCODE>

                              <TEXT>TEXT_1</TEXT>

                        </CHARGE>

                        <CHARGE>

                              <CCODE>CCODE_2</CCODE>

                              <TEXT>TEXT_2</TEXT>

                        </CHARGE>

                  </TANK>

                  <TANK>

                        <TANKNO>TA02TNO002B</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_3</CCODE>

                              <TEXT>TEXT_3</TEXT>

                        </CHARGE>

                        <CHARGE>

                              <CCODE>CCODE_4</CCODE>

                              <TEXT>TEXT_4</TEXT>

                        </CHARGE>

                  </TANK>

            </Record>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_2</MOVE>

                  <TANK>

                        <TANKNO>TA03TNO003C</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_5</CCODE>

                              <TEXT>TEXT_5</TEXT>

                        </CHARGE>

                        <CHARGE>

                              <CCODE>CCODE_6</CCODE>

                              <TEXT>TEXT_6</TEXT>

                        </CHARGE>

                  </TANK>

                  <TANK>

                        <TANKNO>TA04TNO004D</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_7</CCODE>

                              <TEXT>TEXT_7</TEXT>

                        </CHARGE>

                        <CHARGE>

                              <CCODE>CCODE_8</CCODE>

                              <TEXT>TEXT_8</TEXT>

                        </CHARGE>

                  </TANK>

            </Record>

      </ns0:Root>

       

      ACTUAL OUTPUT:

       

      <ns0:Root xmlns:ns0=http://EDIAD_POC_Mapping.EDIAD_HD>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_1</MOVE>

                  <TANK>

                        <TANKNO>TA01TNO001A</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_1</CCODE>

                              <TEXT>TEXT_1</TEXT>

                        </CHARGE>

                  </TANK>

                  <TANK>

                        <TANKNO>TA02TNO002B</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_3</CCODE>

                              <TEXT>TEXT_3</TEXT>

                        </CHARGE>

                  </TANK>

            </Record>

            <Record>

                  <VID>ABC</VID>

                  <VREF>VREF1</VREF>

                  <MOVE>MOVENO_2</MOVE>

                  <TANK>

                        <TANKNO>TA03TNO003C</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_5</CCODE>

                              <TEXT>TEXT_5</TEXT>

                        </CHARGE>

                  </TANK>

                  <TANK>

                        <TANKNO>TA04TNO004D</TANKNO>

                        <CHARGE>

                              <CCODE>CCODE_7</CCODE>

                              <TEXT>TEXT_7</TEXT>

                        </CHARGE>

                  </TANK>

            </Record>

      </ns0:Root>

       

      XSLT (being used in Functoid in BizTalk:

       

      <xsl:template name=”GroupByID2″>

      <xsl:param name=”param3″/>

      <xsl:param name=”param4″/>

           <xsl:if test=”$param3=’true'”>

                   <xsl:element name=”Record”>

                    <xsl:element name=”VID”><xsl:value-of select=”VID”/></xsl:element>

                    <xsl:element name=”VREF”><xsl:value-of select=”VREF”/></xsl:element>

                    <xsl:element name=”MOVE”><xsl:value-of select=”MOVE”/></xsl:element>

                    <xsl:for-each select=”//Record[MOVE=$param4]”>

                        <xsl:element name=”TANK”>

                         <xsl:element name=”TANKNO”><xsl:value-of select=”TANKNO”/></xsl:element>

                             <xsl:element name=”CHARGE”>

                               <xsl:element name=”CCODE”><xsl:value-of select=”CHARGE/CCODE”/></xsl:element>

                               <xsl:element name=”TEXT”><xsl:value-of select=”CHARGE/TEXT”/></xsl:element>

                             </xsl:element>

                       </xsl:element>

                    </xsl:for-each>

                  </xsl:element>

           </xsl:if>

      </xsl:template>

       

      1. I tried using nested for-each (shown below) but then the output is considering all the 8 CHARGE nodes and not just the ones under the TANKNO

                    <xsl:for-each select=”//Record[CHARGE]”>

                             <xsl:element name=”CHARGE”>

                               <xsl:element name=”CCODE”><xsl:value-of select=”CHARGE/CCODE”/></xsl:element>

                               <xsl:element name=”TEXT”><xsl:value-of select=”CHARGE/TEXT”/></xsl:element>

                             </xsl:element>

                   </xsl:for-each>

       

       

      2. I tried using TANKNO=$param5 (shown below) but then the output is considering only the first node of the <CHARGE> loop

                    <xsl:for-each select=”//Record[TANKNO=$param5]”>

                             <xsl:element name=”CHARGE”>

                               <xsl:element name=”CCODE”><xsl:value-of select=”CHARGE/CCODE”/></xsl:element>

                               <xsl:element name=”TEXT”><xsl:value-of select=”CHARGE/TEXT”/></xsl:element>

                             </xsl:element>

                   </xsl:for-each>

       

      3. Tried Recursive looping and <apply-template> also but just couldn’t get the right syntax J Need help

       

      Thanks and regards

      Aditya

Viewing 0 reply threads
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.