Looks kinda like
<xsl:key name="options" match="measurement" use="@type" />
<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.
-Steve
On 7/31/06, smithbm33 <smithbm33(_at_)yahoo(_dot_)com> wrote:
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--