|
Subject: Re: [xsl] Transformation assistance please.. From: "Jay Bryant" <jay@xxxxxxxxxxxx> Date: Mon, 31 Jul 2006 10:22:44 -0500 |
Hmmm, Bret became Eugene....
Whether you use a 12-hour clock or a 24-hour clock makes a big difference.
In XSLT 1.0, sorting by time is a pain, but it's a lot easier if you use a
24-hour clock. If you use a 24-hour clock, then you can multiply the value
before the colon by 60 and add it to the value after the colon. If you use a
12-hour clock, you have to determine A.M or P.M and take additional steps
(which I'm sure you can figure out).
So, assuming you use a 24-hour clock, change:
<xsl:template match="cardiacOutputTime1">
<table>
<tr>
<th>Time</th>
<th>Stage</th>
<th>CO</th>
<th>O2</th>
<th>SpO2</th>
<th>He</th>
<th>xyz</th>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
to:
<xsl:template match="cardiacOutputTime1">
<table>
<tr>
<th>Time</th>
<th>Stage</th>
<th>CO</th>
<th>O2</th>
<th>SpO2</th>
<th>He</th>
<th>xyz</th>
</tr>
<xsl:apply-templates>
<xsl:sort select="number(normalize-space(substring-before(@time,
':'))) * 60 + number(normalize-space(substring-after(@time , ':')))"
data-type="number"/>
</xsl:apply-templates>
</table>
</xsl:template>
(By the way, one of your time values has an extraneous space. That's why I
added normalize-space().)
Unfortunately, time is scarce today, so how to dynamically generate the
heading values and match the data to the proper heading will have to wait. I
know I could do it, but I need to get on to my client's work. I bet someone
else on the list can help you with that part, though.
Jay Bryant
Bryant Communication Services
----- Original Message -----
From: <jeb501@xxxxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, July 31, 2006 1:14 AM
Subject: Re: [xsl] Transformation assistance please..
> Hi Jay,
>
> I tried with your XSL, the resulting HTML is not showing time sorted also,
>
> How to get the Heading of the table
>
>
> <th>CO</th>
> <th>O2</th>
> <th>SpO2</th>
> <th>He</th>
> <th>xyz</th>
>
> based on type attribute, instead of typing it manualy in XSL.
>
> Regards
> Eugene
>
>
>
>
>
>
> "Jay Bryant"
> <jay@xxxxxxxxxxxx
> > To
> <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> 31/07/2006 10:24 cc
> AM
> Subject
> Re: [xsl] Transformation assistance
> Please respond to please..
> xsl-list@xxxxxxxx
> lberrytech.com
>
>
>
>
>
>
>
>
> Hi, Bret,
>
> Here's one solution.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output method="html" indent="yes"/>
>
> <xsl:template match="hemoDynamicTables">
> <html>
> <xsl:apply-templates/>
> </html>
> </xsl:template>
>
> <xsl:template match="cardiacOutput">
> <xsl:apply-templates/>
> </xsl:template>
>
> <xsl:template match="cardiacOutputTime1">
> <table>
> <tr>
> <th>Time</th>
> <th>Stage</th>
> <th>CO</th>
> <th>O2</th>
> <th>SpO2</th>
> <th>He</th>
> <th>xyz</th>
> </tr>
> <xsl:apply-templates/>
> </table>
> </xsl:template>
>
> <xsl:template match="measurement">
> <tr>
> <td><xsl:value-of select="@stage"/></td>
> <td><xsl:value-of select="@time"/></td>
> <xsl:choose>
> <xsl:when test="@type='CO'">
> <td><xsl:value-of select="."/> <xsl:value-of select="uom"/></td>
> <td> </td>
> <td> </td>
> <td> </td>
> <td> </td>
> </xsl:when>
> <xsl:when test="@type='O2'">
> <td> </td>
> <td><xsl:value-of select="."/> <xsl:value-of select="uom"/></td>
> <td> </td>
> <td> </td>
> <td> </td>
> </xsl:when>
> <xsl:when test="@type='SpO2'">
> <td> </td>
> <td> </td>
> <td><xsl:value-of select="."/> <xsl:value-of select="uom"/></td>
> <td> </td>
> <td> </td>
> </xsl:when>
> <xsl:when test="@type='He'">
> <td> </td>
> <td> </td>
> <td> </td>
> <td><xsl:value-of select="."/> <xsl:value-of select="uom"/></td>
> <td> </td>
> </xsl:when>
> <xsl:when test="@type='xyz'">
> <td> </td>
> <td> </td>
> <td> </td>
> <td> </td>
> <td><xsl:value-of select="."/> <xsl:value-of select="uom"/></td>
> </xsl:when>
> <xsl:otherwise>
> <xsl:message>Error</xsl:message>
> </xsl:otherwise>
> </xsl:choose>
> </tr>
> </xsl:template>
>
> </xsl:stylesheet>
>
> I'm sure (because I can think of them) that there are other ways, but this
> one works and is (I hope) easy to follow. I tested it with Xalan-J.
>
> Welcome to XSLT.
>
> Jay Bryant
> Bryant Communication Services
>
> ----- Original Message -----
> From: "smithbm33" <smithbm33@xxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Sunday, July 30, 2006 11:26 PM
> Subject: [xsl] Transformation assistance please..
>
>
> > Greetings,
> >
> > I am new to using XSLT 1.0 - I have the following XML
> > that I need to transform into HTML table format based
> > on attributes within the xml. Any suggestions on how
> > to transform this would be of great assistance.
> >
> > 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 -> |
|---|---|---|
| Re: [xsl] Transformation assistance, jeb501 | Thread | RE: [xsl] Transformation assistance, cknell |
| Re: [xsl] Sibling axis and as="elem, David Carlisle | Date | Re: [xsl] Disapearing spaces betwee, David Carlisle |
| Month |