xsl-list
[Top] [All Lists]

RE: xsl- Transforming to HTML table with two entries in each row

2003-03-07 00:17:26
Hip hei!

Let's say I hae the following XML
<fields>
      <field>
              <name>Field 1</name>
              <value>Value 1</value>
      </field>
      <field>
              <name>Field 2</name>
              <value>Value 2</value>
      </field>
      <field>
              <name>Field 3</name>
              <value>Value 3</value>
      </field>
      <field>
              <name>Field 4</name>
              <value>Value 4</value>
      </field>
</fields>
and I want the html table output (using XSL transfomration) to be :
<table>
<tr>
<td>Field 1</td>
<td>Value 1</td>
<td>Field 2</td>
<td>Value 2</td>
</tr>
<tr>
<td>Field 3</td>
<td>Value 3</td>
<td>Field 4</td>
<td>Value 4</td>
</tr>
</table>

My problem is creating the mechnism that puts 2 (istead of 1 which is
simple and easy) "fields" in one row (tr element)

It's a grouping problem, and there's most probably an entry for it in the FAQ. 
Anyhow,

<xsl:template match="fields">
  <table>
    <xsl:for-each select="field[position() mod 2 = 1]">
      <tr>
        <xsl:for-each select="./* | following-sibling::field[1]/* ">
          <td>
            <xsl:value-of select="." />
          </td>
        </xsl:for-each>
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>

should do the trick.

Cheers,

Jarno - Delerium: Heaven's Earth (Matt Darey remix)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>