|
Subject: Re: [xsl] Generating dynamic HTML table content - headers and cell data From: Steve <subsume@xxxxxxxxx> Date: Mon, 31 Jul 2006 16:47:19 -0400 |
<xsl:template match="/">
<table>
<tr>
<td><xsl:value-of select="@time"></td>
<td><xsl:value-of select="@stage"></td>
<xsl:for-each
select="//cardiacOutputTime1/measurement[generate-id(.)=generate-id(key('options',@type)[1])]">
<!-- basically gives you each distinct @type -->
<xsl:sort select="@type" />
<!-- sorts it -->
<td><xsl:value-of select="@type" /></td>
<!-- creates a new col -->
</xsl:for-each>
</tr>
</table>This is pretty far from complete but I saw this was your second post and wanted to at least reply. I may be wrong but this problem seems to require a recursive algorithm which loops through distinct @type's and saves them as $col1, $col2, etc, and when complete loops through the measurements, testing $colX against @type. This is one I have not come up against, although I have solved similar problems.
I have the following example of XML that I need to transform into an HTML table.
Requirements are:
The HTML table could be have different column headers each time it is generated based on the incoming XML - they are comprised of the two static columns (@time and @stage) then dynamically based on @type. Additionally the contents of the rows would be based on potential groupings of data contained within the nodes with the context drivers being @stage and @time within the measurement node (see the second row of the table below).
I am able to create the table with out the special logic using XSLT - but this is where I am at a loss for what XSLT may or may not be able to provide to perform the additional groupings ang merging, etc..
Thanks in advance...
Here is the XML:
<hemoDynamicTables> <cardiacOutput> <cardiacOutputTime1> <measurement stage="Pre" time="12:01" type="CO" uom="L/m">4.0</measurement> <measurement stage="Pre" time="12:02" type="O2" uom="%">98</measurement> <measurement stage="Post" time="12:05" type="O2" uom="%">88</measurement> <measurement stage="During" time="12:04" type="SpO2" uom="%">40</measurement> <measurement stage="Pre" time="12:02 " type="xyz" uom="ml">300</measurement> <measurement stage="During" time="12:02" type="He" uom="%">100</measurement> </cardiacOutputTime1> </cardiacOutput> </hemoDynamicTables>
The HTML table output that I need is:
Time | Stage | CO | O2 | SpO2 | He | xyz | --------------------------------------------- 12:01 | Pre | 4.0 | | | | | --------------------------------------------- 12:02 | Pre | | 98 | | | 300 | --------------------------------------------- 12:02 | During| | | | 98 | | --------------------------------------------- 12:04 | During| | | 40 | | | --------------------------------------------- 12:05 | Post | | 88 | | | | ---------------------------------------------
Thanks - Bret
__________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Generating dynamic HTML table, smithbm33 | Thread | [xsl] OO 2.0.3/xhtml export/DCMI, Gannon Dick |
| [xsl] Generating dynamic HTML table, smithbm33 | Date | [xsl] OO 2.0.3/xhtml export/DCMI, Gannon Dick |
| Month |