This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Finding the maximun number of nodes
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] Finding the maximun number of nodes
- From: Jiri Jirat <Jiri dot Jirat at idoox dot com>
- Date: Fri, 05 Jan 2001 08:30:00 +0100
- Organization: IDOOX
- References: <001d01c076e4$62083520$0701a8c0@kanhan.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hello Michael,
here is the solution:
XSL:
========
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="maximum">
<xsl:apply-templates select="table" mode="howmany"/>
</xsl:variable>
<xsl:template match="/">
<table columns="{substring-before($maximum,'~')}">
<!-- ... -->
</table>
</xsl:template>
<xsl:template match="table" mode="howmany">
<xsl:apply-templates select="tr" mode="howmany">
<xsl:sort select="count(td)" order="descending" data-type="number"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="tr" mode="howmany">
<xsl:value-of select="count(td)"/>
<xsl:text>~</xsl:text>
</xsl:template>
</xsl:stylesheet>
Output:
=======
<?xml version="1.0" encoding="utf-8"?>
<table columns="3"/>
Michael Lee wrote:
>
> I am writing a XSLT stylesheet to transform a simple table from HTML to WML.
> However, the "columns" attribute is required for the "table" element in the
> latter format. Therefore, I must be able to determine the maximum number of
> cells in the rows and use it as the value for the "columns" attribute.
>
> The problem is that there is no way I can store and compare the result after
> I count the number of <td> in each <tr>. I can do a sort and then count the
> first or last row, but then there is no way I can unsort the rows again to
> preserve the original output.
>
> Does anyone have any idea if this problem has a purely XSLT solution? The
> following is my input and desired output:
>
> HTML input:
>
> <table>
> <tr><td>(1,1)</td></tr>
> <tr><td>(2,1)</td><td>(2,2)</td><td>(2,3)</td></tr>
> <tr><td>(3,1)</td><td>(3,2)</td></tr>
> </table>
>
> WML output:
>
> <table columns="3">
> <tr><td>(1,1)</td></tr>
> <tr><td>(2,1)</td><td>(2,2)</td><td>(2,3)</td></tr>
> <tr><td>(3,1)</td><td>(3,2)</td></tr>
> </table>
>
> --
> Michael Lee
> mlee@kanhan.com
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
--
<name firstName="Jirka" surname="Jirat"/>
<mail> jiratj@idoox.com </mail>
<support> http://www.zvon.org </support>
<zvonMailingList> http://www.zvon.org/index.php?nav_id=4
</zvonMailingList>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list