[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Tranforming a table with colspan and rowspan attributes to another more complex table
Subject: [xsl] Tranforming a table with colspan and rowspan attributes to another more complex table From: "Rogier Hofboer" <hofboer@xxxxxxxxx> Date: Tue, 29 Jan 2002 14:08:57 +0100 |
Hi, Can anybody help me out with the following? xml: <fvtable> <fvtr> <fvtd>1</fvtd> <fvtd>2</fvtd> <fvtd>3</fvtd> <fvtd>4</fvtd> </fvtr> <fvtr> <fvtd>5</fvtd> <fvtd>6</fvtd> <fvtd>7</fvtd> <fvtd>8</fvtd> </fvtr> </fvtable> xslt: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:template match="fvtable"> <table width="100%" border="0" cellpadding="0" cellspacing="1"> <xsl:variable name="maxcells"> <xsl:for-each select="fvtr"><xsl:sort select="count(fvtd)" order="descending"/> <xsl:if test="position()=1"><xsl:value-of select="count(fvtd)"/></xsl:if> </xsl:for-each> </xsl:variable> <tr> <td colspan="{$maxcells*2+1}" bgcolor="#D9DCEF" height="2"></td> </tr> <xsl:for-each select="fvtr"> <tr> <td bgcolor="#D9DCEF" width="2"></td> <xsl:for-each select="fvtd"> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2"> <xsl:apply-templates /> </font> </td> <xsl:if test="position() != last()"> <td bgcolor="#D9DCEF" width="1"></td> </xsl:if> </xsl:for-each> <td bgcolor="#D9DCEF" width="2"></td> </tr> <xsl:if test="position() != last()"> <tr> <td colspan="{$maxcells*2+1}" bgcolor="#D9DCEF" height="1"></td> </tr> </xsl:if> </xsl:for-each> <tr> <td colspan="{$maxcells*2+1}" bgcolor="#D9DCEF" height="2"></td> </tr> </table> </xsl:template> </xsl:stylesheet> This works ok. But now I want to change the input XML to be something like this: <fvtable> <fvtr> <fvtd colspan="2">1</fvtd> <fvtd>2</fvtd> <fvtd>3</fvtd> <fvtd>4</fvtd> <fvtd>5</fvtd> </fvtr> <fvtr> <fvtd>6</fvtd> <fvtd>7</fvtd> <fvtd colspan="2">8</fvtd> <fvtd rowspan="3">9</fvtd> <fvtd>10</fvtd> </fvtr> <fvtr> <fvtd>11</fvtd> <fvtd colspan="2" rowspan="2">12</fvtd> <fvtd>13</fvtd> <fvtd>14</fvtd> </fvtr> <fvtr> <fvtd>15</fvtd> <fvtd>16</fvtd> <fvtd>17</fvtd> </fvtr> </fvtable> And this HTML as output: <table width="100%" border="0" cellpadding="0" cellspacing="1"> <tr> <td colspan="13" bgcolor="#D9DCEF" height="2"></td> </tr> <tr> <td bgcolor="#D9DCEF" width="2"></td> <td colspan="3" bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">1</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">2</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">3</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">4</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">5</font> </td> <td bgcolor="#D9DCEF" width="2"></td> </tr> <tr> <td colspan="13" bgcolor="#D9DCEF" height="1"></td> </tr> <tr> <td bgcolor="#D9DCEF" width="2"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">6</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">7</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td colspan="3" bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">8</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td rowspan="5" bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">9</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">10</font> </td> <td bgcolor="#D9DCEF" width="2"></td> </tr> <tr> <td colspan="9" bgcolor="#D9DCEF" height="1"></td> <td colspan="3" bgcolor="#D9DCEF" height="1"></td> </tr> <tr> <td bgcolor="#D9DCEF" width="2"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">11</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td colspan="3" rowspan="3" bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">12</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">13</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">14</font> </td> <td bgcolor="#D9DCEF" width="2"></td> </tr> <tr> <td colspan="3" bgcolor="#D9DCEF" height="1"></td> <td colspan="3" bgcolor="#D9DCEF" height="1"></td> <td colspan="3" bgcolor="#D9DCEF" height="1"></td> </tr> <tr> <td bgcolor="#D9DCEF" width="2"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">15</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">16</font> </td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#D9DCEF" width="1"></td> <td bgcolor="#FFFFDD" valign="top"> <font face="arial" size="2">17</font> </td> <td bgcolor="#D9DCEF" width="2"></td> </tr> <tr> <td colspan="13" bgcolor="#D9DCEF" height="2"></td> </tr> </table> I tried a lot of things... But I can't find a single solution that's able to handle all the cases. (just simple colspans work, but not things like the definition above) The stylesheet I am looking for should be able to handle all kinds combinations with colspan an rowspan it should include a complete table handler. Is this possible to build with XSLT? Anyone? Thanks in advance, Rogier Hofboer XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Need Xpath Question (help, Michael Kay | Thread | RE: [xsl] Tranforming a table with , Andrew Welch |
RE: [xsl] FW: Path Reversal, Andrew Welch | Date | RE: [xsl] Tranforming a table with , Andrew Welch |
Month |
Keywords