This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Dynamically building a HTML table from variable row data
- From: "Robert Koberg" <rob at koberg dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Sat, 15 Dec 2001 12:06:23 -0800
- Subject: Re: [xsl] Dynamically building a HTML table from variable row data
- References: <LOBBICBLDJIJHPNJFPOLOEPACCAA.ammd@bigpond.net.au>
- Reply-to: xsl-list at lists dot mulberrytech dot com
how about:
<xsl:template match="BLOCK">
> <table border="10">
<xsl:apply-templates select="row"/>
> </table>
> </xsl:template>
<xsl:template match="ROW">
<tr>
<td><xsl:value-of select="A"/></td>
<td><xsl:value-of select="B"/></td>
<td><xsl:value-of select="C"/></td>
<td><xsl:value-of select="D"/></td>
<td><xsl:value-of select="E"/></td>
</tr>
</xsl:template>
----- Original Message -----
From: "Michael Leditschke" <ammd@bigpond.net.au>
To: <XSL-List@lists.mulberrytech.com>
Sent: Saturday, December 15, 2001 8:25 AM
Subject: [xsl] Dynamically building a HTML table from variable row data
> I am attempting to populate an HTML table
> where the column names are generated by the
> set of element names on each row. Not all
> elements occur on all rows.
>
> My problem is thus to dynamically work out
> the total set of columns (using the element
> names) and dynamically position each piece
> of data in the correct column.
>
> For example, assume XML looks like
>
> <BLOCK>
> <ROW>
> <A>1</A>
> <B>2</B>
> </ROW>
> <ROW>
> <A>9</A>
> <B>3</B>
> <C>4</C>
> </ROW>
> <ROW>
> <A>5</A>
> <D>6</D>
> <E>7</E>
> </ROW>
> <BLOCK>
>
> I'd like to end up with a table something like
>
> A B C D E
> 1 2
> 9 3 4
> 5 6 7
>
>
> Thus far I have code something like
>
> <xsl:template match="BLOCK">
> <xsl:variable name="ColumnNames"
> select="ROW/*[not(local-name()=local-name(preceding::ROW/*)))]"/>
> <table border="10">
> <tr>
> <xsl:for-each select="$ColumnNames">
> <th>
> <xsl:value-of select="local-name()"/>
> </th>
> </xsl:for-each>
> </tr>
> </table>
> </xsl:template>
>
> I know its wrong because the local-name function is going
> to process the first node only. So it handles the <A>
> element ok but not any of the others.
>
> I'm trying to follow the
> examples I've seen of grouping but most seem to be based
> on element/attribute content rather than element names.
>
> Various wild and whacky schemes have come to mind but
> before I looked for a zebra, I thought I'd check if anyone
> knew of a horse.
>
> Any pointers much appreciated.
>
> Regards
> Michael
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list