Quantcast
Channel: SCN : All Content - Process Integration (PI) & SOA Middleware
Viewing all articles
Browse latest Browse all 7030

Help needed on XSLT n:m mapping

$
0
0

Hi, all

I am stuck with the XSLT program that is supposed to fulfill the following requirement:

Source:

   <DT_IN>

   <DATA>

      <PERNR>111</PERNR>

      <PayRecord>

         <WageType>A1</WageType>

         <Hours>10</Hours>

      </PayRecord>

      <PayRecord>

         <WageType>A2</WageType>

         <Hours>15</Hours>

      </PayRecord>

      <PayPeriod>201402</PayPeriod>

   </DATA>

   <DATA>

      <PERNR>222</PERNR>

      <PayRecord>

         <WageType>A3</WageType>

         <Hours>100</Hours>

      </PayRecord>

      <PayRecord>

         <WageType>A4</WageType>

         <Hours>150</Hours>

      </PayRecord>

      <PayPeriod>201405</PayPeriod>

   </DATA>

  </DT_IN>

 

Output:

<?xml version="1.0" encoding="UTF-8"?>

<DT_IN>

   <DATA>

   <PERNR>111</PERNR>

   <WageType>A1</WageType>

   <Hours>10</Hours>

   <Payperiod>201402</Payperiod>

</DATA>

<DATA>

   <PERNR>111</PERNR>

   <WageType>A2</WageType>

   <Hours>15</Hours>

   <Payperiod>201402</Payperiod>

</DATA>

   <DATA>

   <PERNR>222</PERNR>

   <WageType>A3</WageType>

   <Hours>100</Hours>

   <Payperiod>201405</Payperiod>

</DATA>

<DATA>

     <PERNR>222</PERNR>

     <WageType>A4</WageType>

     <Hours>150</Hours>

     <Payperiod>201405</Payperiod>

  </DATA>

</DT_IN>

 

I am using the following XSLT program:

<?xml version="1.0"?>

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

<xsl:output method="xml" indent="yes"/>

<xsl:template match="DT_IN/DATA">

  <xsl:variable name="empid" select="PERNR"/>

  <xsl:variable name="payperiod" select="PayPeriod"/>

    <xsl:for-each select="PayRecord">

      <DATA>

      <PERNR>

        <xsl:value-of select="$empid"/>

      </PERNR>

      <WageType>

      <xsl:value-of select="WageType"/>

      </WageType>

      <Hours>

        <xsl:value-of select="Hours"/>

      </Hours>

      <Payperiod>

        <xsl:value-of select="$payperiod"/>

      </Payperiod>

      </DATA>

    </xsl:for-each>

</xsl:template>

</xsl:stylesheet>

 

The program can only create up to the <DATA> level properly. However, I cannot figure out a way to create the <DT_IN> tag. Please help.

Thanks,

Jonathan.


Viewing all articles
Browse latest Browse all 7030

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>