Subject: Re: [xsl] Finding the maximun number of nodes From: "Michael Lee" <mlee@xxxxxxxxxx> Date: Fri, 5 Jan 2001 16:59:17 +0800 |
Thank you for your help. However, this solution doesn't seem to solve the problem if there is more than one table in the HTML file because using <xsl:variable> requires us to know how many tables are there in advance, if we are given the HTML files at process-time. Dimitre's solution makes use of <xsl:key>, something that I am not familiar with. However, I believe it still doesn't work if the stylesheet has to handle an unknown number of tables. Michael Lee mlee@xxxxxxxxxx ----- Original Message ----- From: "Jiri Jirat" <Jiri.Jirat@xxxxxxxxx> 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> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Finding the maximun numbe, Jiri Jirat | Thread | Re: [xsl] Finding the maximun numbe, Dimitre Novatchev |
[xsl] Re: topological sort, Joerg Pietschmann | Date | [xsl] sorting, Krithiga Subramanian |
Month |