[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Finding the maximun number of nodes
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|