[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Re: Incrementing a Global variable
> Problem: print a list of students, grouping the students by their > language and printing a blank line between each group. Number the blank > lines in addition to the lines with students' names. > > So calling position() to get the number is insufficient, because > position() doesn't count the blank lines. > > Mukul was commenting that this problem would be easier to solve if XSLT > supported something like variables. For example: This is not a difficult problem and it doesn't deserve all this long thread. Here's a simple two-pass solution: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://exslt.org/common" > <xsl:output method="html" indent="yes"/> <xsl:key name="kStudent" match="student" use="@nl"/> <xsl:template match="/"> <html> <table> <xsl:variable name="vrtfGrouped"> <xsl:for-each select="/*/student[generate-id() = generate-id(key('kStudent', @nl )[1] ) ]"> <xsl:copy-of select="key('kStudent', @nl)"/> <xsl:if test="not(position() = last())"> <blank/> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:variable name="vGrouped" select="ext:node-set($vrtfGrouped)/*"/> <xsl:for-each select="$vGrouped"> <tr> <td> <xsl:value-of select="position()"/> </td> <td> <xsl:value-of select="concat(@name, ' ')"/> </td> </tr> </xsl:for-each> </table> </html> </xsl:template> </xsl:stylesheet> When this transformation is applied e.g. on the following source.xml: <t> <student name="x" nl="English"/> <student name="y" nl="German"/> <student name="z" nl="English"/> <student name="t" nl="French"/> <student name="u" nl="English"/> </t> the wanted result is produced: <html> <table> <tr> <td>1</td> <td>x </td> </tr> <tr> <td>2</td> <td>z </td> </tr> <tr> <td>3</td> <td>u </td> </tr> <tr> <td>4</td> <td> </td> </tr> <tr> <td>5</td> <td>y </td> </tr> <tr> <td>6</td> <td> </td> </tr> <tr> <td>7</td> <td>t </td> </tr> </table> </html> So what is the problem? ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com 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
|