Subject: RE: [xsl] Looping in XSLT(old question, but maybe new problem) From: "Liu Shuai" <shuai@xxxxxxxxxxxxxxxxx> Date: Tue, 24 Jun 2003 00:17:26 -0400 |
Mike, Thank you for your response. I got another issue. I have the template like this: <xsl:template match="foo"> <table> <xsl:for-each select="bar"> <xsl:sort select="@id" data-type="number"/> <xsl:if test="(number(position()) mod 3) = 1"> <tr> <td> <xsl:value-of disable-output-escaping="yes" select="someElement"/> </td> <td> <xsl:for-each select="following-sibling::bar[position()=1]"> <xsl:value-of disable-output-escaping="yes" select="someElement"/> </xsl:for-each> </td> <td> <xsl:for-each select="following-sibling::bar[position()=2]"> <xsl:value-of disable-output-escaping="yes" select="someElement"/> </xsl:for-each> </td> </tr> </xsl:if> </xsl:for-each> </table> </xsl:template> As you see, I sort bar based on some rule, but when I get the next two element, how can I keep the order? Looks to me following-sibling fetch element based on the orginal order in the source file. Thank you. LS -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Mike Brown Sent: Monday, June 23, 2003 10:04 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Looping in XSLT(old question, but maybe new problem) Liu Shuai wrote: > Hi, all > > I am trying to write a template that will generate a table based on a xml > file and right now I don't have any > clue how to do it. > > If I have a source file looks like this > > <foo> > <bar id='1'> > <someElement>a</someElement> > </bar> > <bar id='2'> > <someElement>b</someElement> > </bar> > <bar id='3'> > <someElement>c</someElement> > </bar> > <bar id='4'> > <someElement>d</someElement> > </bar> > <bar id='5'> > <someElement>e</someElement> > </bar> > ... > </foo> > > Can I write a style sheet that will transform the source file above to a > html table like this? > > <table> > <tr> > <td>a</td> > <td>b</td> > <td>c</td> > </tr> > <tr> > <td>d</td> > <td>e</td> > <td> </td> > </tr> > ... > </table> > > Basicly, I want to generate N columns per row but I don't know how many > "bar"s I have in the source file. Select all bar elements for processing. In the template that matches a bar element, if position() returns a value that when divided by 3 has a remainder of 1, generate a table row element. Inside that element, create cells for the current node and its first two following siblings. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Looping in XSLT(old quest, Mike Brown | Thread | Re: [xsl] Looping in XSLT(old quest, Mike Brown |
RE: [xsl] Looping in XSLT(old quest, Liu Shuai | Date | RE: [xsl] Looping in XSLT(old quest, Liu Shuai |
Month |