| Subject: RE: [xsl] xsl- Transforming to HTML table with two entries in each row From: Jarno.Elovirta@xxxxxxxxx Date: Fri, 7 Mar 2003 09:17:26 +0200 | 
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
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] xsl- Transforming to HTML, Babu Sathish Ramaraj | Thread | RE: [xsl] xsl- Transforming to HTML, Jarno . Elovirta | 
| RE: [xsl] CDATA - Can I have XML ?, Jarno . Elovirta | Date | Re: [xsl] bug in LibXSLT???, S Woodside | 
| Month |