[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: Re: [xsl] Incrementing a Global variable
Subject: Re: Re: [xsl] Incrementing a Global variable From: Rajendra S Rawat <rajsrawat@xxxxxxxxx> Date: Thu, 28 Aug 2003 22:29:04 -0700 (PDT) |
I could not try ur solution This is the error/msgbox I got --------------------------- XML Spy --------------------------- XSL transformation failed due to following error: Namespace 'http://exslt.org/common' does not contain any functions. --------------------------- OK --------------------------- --- Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote: > > 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 > __________________________________ 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Re: [xsl] Incrementing a Global, Dimitre Novatchev | Thread | Re: Re: Re: [xsl] Incrementing a Gl, Dimitre Novatchev |
Re: [xsl] Re: Incrementing a Global, Rajendra S Rawat | Date | RE: [xsl] From a string to node-set, Jarno . Elovirta |
Month |