RE: [xsl] display xml to complex html format

Subject: RE: [xsl] display xml to complex html format
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 26 Mar 2010 13:51:35 -0000
Looks like a classic grouping problem. Either switch to XSLT 2.0 (Saxon runs
on .NET) and use xsl:for-each-group, or if you absolutely have to stick with
XSLT 1.0, then read up on the Muenchian Grouping technique.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 
 

> -----Original Message-----
> From: Ramesh Kumar [mailto:cnrameshkumar@xxxxxxxxx] 
> Sent: 26 March 2010 13:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] display xml to complex html format
> 
> Dear All,
> 
> I have a problem in defining XSLT for the following input and 
> expected output format
> 
> Please Help. I am using XSLT 1.0 version. And Dotnet Framework is 2.0
> 
> Input XML is
> <NewDataSet>
>   <Lines>
>     <ColKey>2008</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>SALES </CategoryName>
>     <A1>-422976806.00000</A1>
>     <A2>-3807391165.06000</A2>
>     <A3>0.00000</A3>
>     <Total>-4230367971.06000</Total>
>   </Lines>
>   <Lines>
>     <ColKey>2008</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>PROFIT</CategoryName>
>     <A1>-4055338042.00000</A1>
>     <A2>-4813647070.00000</A2>
>     <A3>0.00000</A3>
>     <Total>-8868985112.00000</Total>
>   </Lines>
>   <Lines>
>     <ColKey>2009</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>SALES</CategoryName>
>     <A1>-18595059667.66000</A1>
>     <A2>47537164177.41000</A2>
>     <A3>0.00000</A3>
>     <Total>28942104509.75000</Total>
>   </Lines>
>   <Lines>
>     <ColKey>2009</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>PROFIT</CategoryName>
>     <A1>-18595059667.66000</A1>
>     <A2>47537164177.41000</A2>
>     <A3>0.00000</A3>
>     <Total>28942104509.75000</Total>
>   </Lines>
>   <Lines>
>     <ColKey>2010</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>SALES</CategoryName>
>     <A1>-982334530.00000</A1>
>     <A2>-4036020530.00000</A2>
>     <A3>0.00000</A3>
>     <Total>-5018355060.00000</Total>
>   </Lines>
>   <Lines>
>     <ColKey>2010</ColKey>
>     <RowKey>JAN</RowKey>
>     <CategoryName>PROFIT</CategoryName>
>     <A1>-982334530.00000</A1>
>     <A2>-4036020530.00000</A2>
>     <A3>0.00000</A3>
>     <Total>-5018355060.00000</Total>
>   </Lines>
> <Lines>
>     <ColKey>2010</ColKey>
>     <RowKey>FEB</RowKey>
>     <CategoryName>PROFIT</CategoryName>
>     <A1>-982334530.00000</A1>
>     <A2>-4036020530.00000</A2>
>     <A3>0.00000</A3>
>     <Total>-5018355060.00000</Total>
>   </Lines>
> </NewDataSet>
> Expected Output format HTML format is
> <html xmlns="http://www.w3.org/1999/xhtml"; > <head>
>     <title>Untitled Page</title>
> </head>
> <body>
> <table border="1" cellpadding="1" cellspacing="0"> 
> <thead><tr><td rowspan="2">Month</td><td 
> rowspan="2">CategoryName</td><td colspan="4" 
> align="center">2008</td> <td colspan="4" 
> align="center">2009</td><td colspan="4"
> align="center">2010</td></tr><tr><td>A1</td><td>A2</td><td>A3<
> /td><td>Total</td><td>A1</td><td>A2</td><td>A3</td><td>Total</
> td><td>A1</td><td>A2</td><td>A3</td><td
> style="width: 28px">Total</td></tr>
>     <tr>
>         <td rowspan="2">
>             JAN</td>
>         <td rowspan="1">
>             SALES</td>
>         <td>
>             -422976806.00</td>
>         <td>
>             -3807391165.06</td>
>         <td>
>             0.00</td>
>         <td>
>             -4230367971.06</td>
>         <td>
>             -18595059667.66</td>
>         <td>
>             47537164177.41</td>
>         <td>
>             0.00</td>
>         <td>
>             28942104509.75</td>
>         <td>
>             -982334530.00</td>
>         <td>
>             -4036020530.00</td>
>         <td>
>             0.00</td>
>         <td >
>             -5018355060.00</td>
>     </tr>
>     <tr>
> 
>         <td rowspan="1">
>             PROFIT</td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>     </tr>
>     <tr>
>         <td rowspan="1">
>             FEB</td>
>         <td rowspan="1">
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>         <td>
>         </td>
>     </tr>
> </thead><tbody /></table>
> </body>
> </html>
> 
> 
> Regards,
> Ramesh

Current Thread