Welcome to WebmasterWorld Guest from

Forum Moderators: open

Message Too Old, No Replies

Format xsl results into 4-across rows?

7:41 am on Aug 4, 2009 (gmt 0)

Junior Member

10+ Year Member

joined:Dec 2, 2003
posts: 45
votes: 0

Sorry - a bit lost - REALLY new to xml and its friends...

I have an xsl file that is returning xml results formatted into a 220px wide rectangle. I want them to display 4-across and then start a new row.

This has to be simple, right? Do I do this in the php page, or the xsl page, or css...?

thanks for any help,

2:27 pm on Aug 4, 2009 (gmt 0)

Senior Member from CA 

WebmasterWorld Senior Member httpwebwitch is a WebmasterWorld Top Contributor of All Time 10+ Year Member

joined:Aug 29, 2003
votes: 0

I'd do it in the XSL.

Here's a template that works by finding every 4th node, using position() and mod
Then it constructs a variable containing nodes from positions n, n+1, n+2, n+3
Then it loops through these and displays a <td> for each.

I hope it works. It might need a little debugging.

<xsl:template name="twocolumns">
<xsl:for-each select="people[position() mod 4 = 1]">
<xsl:variable name="others" select="following-sibling::option[position() &lt; 4]" />
<xsl:for-each select=".$others">
<xsl:value-of select="person' />
<xsl:if test="not($others)">