I need to eliminate the duplicate rows and extra heading at bottom of
display. I was able to get help with grouping from
www.jenitennison.com, which was very helpful. Any additional assistance
you can give me will be greatly appreciated.
************************************************************************
****************************
Wanted Output
Premise(s)
Bill Period Days in Period
Consumption Amount
(From - To)
2005-01-26 - 2005-02-24 29 Total Therm
14.5 28.66
Total KWH 1333.0 62.40
Current Output
Premise(s)
Bill Period Days in Period
Consumption Amount
(From - To)
2005-01-26 - 2005-02-24 29
Total Therm 14.5 28.66
2005-01-26 - 2005-02-24 29
Total KWH 1333.0 62.40
Premise(s)
Bill Period
(From - To) Days in Period
Consumption Amount
************************************************************************
***********************************
Sample XML
<?xml version="1.0" ?>
- <CUCR151I>
- <DTL-SERVICES>
- <DTL-SERVICE>
<KY-SPT>888888888</KY-SPT>
<CD-SPT-TYPE CISTableName="CIS99999" code="0100">Gas</CD-SPT-TYPE>
<CD-SPT-STAT>02</CD-SPT-STAT>
<TX-TAR-SCH-DESC>IL Residential Gas Service</TX-TAR-SCH-DESC>
<DT-RATE-EFF />
<CD-SERV-DROP-LOC>9</CD-SERV-DROP-LOC>
<DTL-RIDERS />
- <DTL-USAGES>
- <DTL-USAGE>
<DT-LST-PRIM>200503</DT-LST-PRIM>
<DT-RDG-TO>2005-02-24</DT-RDG-TO>
<DT-RDG-FROM>2005-01-26</DT-RDG-FROM>
<AT-DB>28.66</AT-DB>
<QY-INDEX-1>1952</QY-INDEX-1>
<CD-RDG-SRCE>R</CD-RDG-SRCE>
- <DTL-TOT-USAGES>
- <DTL-TOT-USAGE>
<QY-TOT-USAGE>14.5</QY-TOT-USAGE>
<CD-USAGE-TYPE CISTableName="CIS88888" code="125">Total
Therm</CD-USAGE-TYPE>
</DTL-TOT-USAGE>
</DTL-TOT-USAGES>
<DAYS-IN-PRD>29</DAYS-IN-PRD>
</DTL-USAGE>
</DTL-USAGES>
</DTL-SERVICE>
- <DTL-SERVICE>
<KY-SPT>999999999</KY-SPT>
<CD-SPT-TYPE CISTableName="CIS77777"
code="0200">Electric</CD-SPT-TYPE>
<CD-SPT-STAT>02</CD-SPT-STAT>
<TX-TAR-SCH-DESC>Rate 1 Residential Electric Service</TX-TAR-SCH-DESC>
<DT-RATE-EFF />
<CD-SERV-DROP-LOC>9</CD-SERV-DROP-LOC>
<DTL-RIDERS />
- <DTL-USAGES>
- <DTL-USAGE>
<DT-LST-PRIM>200503</DT-LST-PRIM>
<DT-RDG-TO>2005-02-24</DT-RDG-TO>
<DT-RDG-FROM>2005-01-26</DT-RDG-FROM>
<AT-DB>62.4</AT-DB>
<QY-INDEX-1>51503</QY-INDEX-1>
<CD-RDG-SRCE>R</CD-RDG-SRCE>
- <DTL-TOT-USAGES>
- <DTL-TOT-USAGE>
<QY-TOT-USAGE>1333</QY-TOT-USAGE>
<CD-USAGE-TYPE CISTableName="CIS66666" code="010">Total
KWH</CD-USAGE-TYPE>
</DTL-TOT-USAGE>
</DTL-TOT-USAGES>
<DAYS-IN-PRD>29</DAYS-IN-PRD>
</DTL-USAGE>
</DTL-USAGES>
</DTL-SERVICE>
</DTL-SERVICES>
</CUCR151I>
************************************************************************
***********************************
Sample XSLT
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:key name="usage-rows-by-dt-lst-prim" match="DTL-USAGES/DTL-USAGE"
use="DT-LST-PRIM" />
<xsl:template match="/">
<table width="90%" align="center" valign="top" cellpadding="2"
cellspacing="1">
<xsl:for-each select="CUCR151I/DTL-SERVICES/DTL-SERVICE">
<tr class="body">
<td class="body" colspan="1">
<ul CLASS="clsItemsHide">
<table width="90%" align="left" valign="top" border="0">
<tr class="tableRowOdd" valign="top">
<td width="130" align="left" nowrap="nowrap"
colspan="4"><b>Premise(s)</b></td>
</tr>
<tr class="tableColHeader" valign="top">
<td width="130">
<table>
<tr>
<td>
<table>
<tr class="tableColHeader">
<td width="130" nowrap="nowrap"
align="center" valign="top">Bill Period</td>
</tr>
<tr class="tableColHeader">
<td width="130" nowrap="nowrap"
align="center" valign="bottom">(From - To)</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width="130" nowrap="nowrap"
align="center" valign="bottom">Days in Period</td>
<td width="130" nowrap="nowrap"
align="center" valign="bottom">Consumption</td>
<td width="130" nowrap="nowrap"
align="center" valign="bottom">Amount</td>
</tr>
<xsl:apply-templates
select="DTL-USAGES/DTL-USAGE[generate-id(.) =
generate-id(key('usage-rows-by-dt-lst-prim', DT-LST-PRIM)[1])]" >
</xsl:apply-templates>
</table>
</ul>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="DTL-USAGES/DTL-USAGE[position() mod 2 = 0]">
<xsl:for-each select="key('usage-rows-by-dt-lst-prim',
DT-LST-PRIM)">
<tr class="tableRowEven" valign="top">
<td width="130">
<table>
<tr class="tableRowEven" valign="top">
<td width="40%" nowrap="nowrap"
align="left">
<xsl:value-of
select="DT-RDG-FROM"/>
</td>
<td width="20%">-</td>
<td align="right" width="40%"
nowrap="nowrap">
<xsl:value-of
select="DT-RDG-TO"/>
</td>
</tr>
</table>
</td>
<td width="130" align="center">
<xsl:value-of
select="format-number(DAYS-IN-PRD,'#00')"/></td>
<td width="130">
<table width="130" align="left" valign="top"
border="0">
<xsl:for-each
select="DTL-TOT-USAGES/DTL-TOT-USAGE">
<tr class="tableRowEven" valign="top">
<td align="left">
<xsl:value-of
select="CD-USAGE-TYPE"/>
</td>
<td align="right">
<xsl:value-of
select="format-number(QY-TOT-USAGE,'#.0')"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td width="130" align="center"><xsl:value-of
select="format-number(AT-DB, '#.00')"/></td>
</tr>
</xsl:for-each>
</xsl:template>
<xsl:template match="DTL-USAGES/DTL-USAGE[position() mod 2 = 1]">
<xsl:for-each select="key('usage-rows-by-dt-lst-prim',
DT-LST-PRIM)">
<tr class="tableRowOdd" valign="top">
<td width="130">
<table>
<tr class="tableRowOdd" valign="top">
<td width="40%" nowrap="nowrap"
align="left">
<xsl:value-of
select="DT-RDG-FROM"/>
</td>
<td width="20%">-</td>
<td align="right" width="40%"
nowrap="nowrap">
<xsl:value-of
select="DT-RDG-TO"/>
</td>
</tr>
</table>
</td>
<td width="130" align="center">
<xsl:value-of
select="format-number(DAYS-IN-PRD,'#00')"/></td>
<td width="130">
<table width="130" align="left" valign="top"
border="0">
<xsl:for-each
select="DTL-TOT-USAGES/DTL-TOT-USAGE">
<tr class="tableRowOdd" valign="top">
<td align="left">
<xsl:value-of
select="CD-USAGE-TYPE"/>
</td>
<td align="right">
<xsl:value-of
select="format-number(QY-TOT-USAGE,'#.0')"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td width="130" align="center"><xsl:value-of
select="format-number(AT-DB, '#.00')"/></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
*******************************
The information contained in this message may be privileged and/or confidential
and
protected from disclosure. If the reader of this message is not the intended
recipient,
or an employee or agent responsible for delivering this message to the intended
recipient,
you are hereby notified that any dissemination, distribution or copying of this
communication is strictly prohibited. Note that any views or opinions presented
in this
message are solely those of the author and do not necessarily represent those
of Ameren.
All emails are subject to monitoring and archival. Finally, the recipient
should check
this message and any attachments for the presence of viruses. Ameren accepts no
liability
for any damage caused by any virus transmitted by this email. If you have
received this in
error, please notify the sender immediately by replying to the message and
deleting the
material from any computer. Ameren Corporation
*******************************
--~------------------------------------------------------------------
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>
--~--