Subject: Re: [xsl] How count the Table cell (Cals Table) using XSL From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Mon, 10 Jul 2006 18:03:21 +0530 |
Hope you are able to solve the problem using Michael Kay's suggestions. If you still need help, please let us know.
Regards, Mukul
Hi,
I tried many option, but did not found solution. Same Validation Error showing. If I have convert one table, it can easily converted. But If I have paste another table in same file, then showing validation Error.
This Error is -- ======================================================= Validation error FORG0001: Cannot convert string "" to a double Transformation failed: Run-time errors were reported =======================================================
What is the reason?
This is my XML File --------------------
<p>Table 1.3 shows the relative FCC and IEEE power output limits.</p> <table border="0" cellspacing="0" cellpadding="1" width="90%"> <thead> <tr> <th valign="top" colspan="9"><b>Table 1.1 802.11b Channels</b></th> </tr> <tr> <th valign="top"><b>Channel Number</b></th> <th valign="top"><b>Center Frequency (in GHz)</b></th> <th valign="top"><b>USA</b></th> <th valign="top"><b>Europe</b></th> <th valign="top"><b>Spain</b></th> <th valign="top"><b>France</b></th> <th valign="top"><b>Israel</b></th> <th valign="top"><b>China</b></th> <th valign="top"><b>Japan</b></th> </tr> </thead> <tbody> <tr> <td valign="top">1</td> <td valign="top">2.412</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> </tr> <tr><td valign="top">2</td> <td valign="top">2.417</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">3</td> <td valign="top">2.422</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">4</td> <td valign="top">2.427</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">5</td> <td valign="top">2.432</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">6</td> <td valign="top">2.437</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">7</td> <td valign="top">2.442</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">8</td> <td valign="top">2.447</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">9</td> <td valign="top">2.452</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">10</td> <td valign="top">2.457</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">11</td> <td valign="top">2.462</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top">✓</td></tr> <tr><td valign="top">12</td> <td valign="top">2.467</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td></tr> <tr><td valign="top">13</td> <td valign="top">2.472</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top">✓</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td></tr> <tr><td valign="top">14</td> <td valign="top">2.484</td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top">✓</td></tr> </tbody> </table> <p>more columns</p> <table border="0" cellspacing="0" cellpadding="1" width="90%"> <thead> <tr> <th valign="top"><b>Channel Number</b></th> <th valign="top"><b>Center Frequency (in GHz)</b></th> </tr> </thead> <tbody> <tr> <td valign="top">36</td> <td valign="top">5.180</td> </tr> <tr> <td valign="top">40</td> <td valign="top">5.200</td> </tr> <tr> <td valign="top">44</td> <td valign="top">5.220</td> </tr> <tr> <td valign="top">48</td> <td valign="top">5.240</td> </tr> <tr> <td valign="top">52</td> <td valign="top">5.260</td> </tr> <tr> <td valign="top">56</td> <td valign="top">5.280</td> </tr> <tr> <td valign="top">60</td> <td valign="top">5.300</td> </tr> <tr> <td valign="top">64</td> <td valign="top">5.320</td> </tr> <tr> <td valign="top">149</td> <td valign="top">5.745</td> </tr> </tbody> </table>
XSL File:---- --------------
<xsl:template match="table"> <table> <table.html frame="void" width="100%" rules="groups" align="left" /> <xsl:variable name="rtf"> <xsl:call-template name="FindMaxStringLength"> <xsl:with-param name="n" select="count(//tr[5]/td|//tr[5]/th)" /> </xsl:call-template> </xsl:variable>
<colgroup> <xsl:for-each select="$rtf/x">
<col width="{format-number(((. div (sum(../*))) * 100),'##.##')}%"/> </xsl:for-each> </colgroup>
<xsl:copy-of select="*" /> </table> </xsl:template>
<xsl:template name="FindMaxStringLength"> <xsl:param name="n" /> <xsl:if test="$n > 0"> <x> <xsl:for-each select="//tr[2]/th[$n] | //tr/td[$n]"> <xsl:sort select="string-length(.)" order="descending" /> <xsl:if test="position() = 1"> <xsl:value-of select="string-length(.)" /> </xsl:if > </xsl:for-each> </x> <xsl:call-template name="FindMaxStringLength"> <xsl:with-param name="n" select="$n - 1" /> </xsl:call-template> </xsl:if>
</xsl:template>
<xsl:template match="tr"> <xsl:text>
</xsl:text><tr> <xsl:apply-templates/> </tr> </xsl:template>
<xsl:template match="td"> <xsl:text>
</xsl:text><td> <xsl:apply-templates/> </td> </xsl:template>
<xsl:template match="th"> <xsl:text>
</xsl:text><th> <xsl:apply-templates/> </th> </xsl:template>
<xsl:template match="thead"> <xsl:text>
</xsl:text><thead> <xsl:apply-templates/> </thead> </xsl:template>
<xsl:template match="tbody"> <xsl:text>
</xsl:text><tbody> <xsl:apply-templates/> </tbody> </xsl:template>
Thanks,
Byomkesh
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How count the Table cell , Michael Kay | Thread | [xsl] statically known namespaces, andrew welch |
Re: [xsl] SOLVED: [xsl] xsl2 saxon8, David Carlisle | Date | [xsl] statically known namespaces, andrew welch |
Month |