## [xsl] Re: Re: How to Calculate Running Total using Variable within FOR-LOOP?

 Subject: [xsl] Re: Re: How to Calculate Running Total using Variable within FOR-LOOP? From: "Dimitre Novatchev" Date: Sat, 6 Dec 2003 09:07:19 +0100
```Bill,

I am sorry, this is way too big and it seems to me that 90% of the code is
not related to the actual problem.

I know how to solve this class of problems and would like to help, once you
produce the minimal possible example.

Generally, one can use a recursive named templade to do the additions and
get the running total at every step.

Below is an example which takes a list of numbers and produces a the running
total at every step.

This is a simple example that I understand and, hopefully, could be helpfull

If you provide a very simple example of yours the solution of which will
solve your problem, then I will definitely give it a try.

Here's my example:

numList.xml:
========
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>

Transformation (testScanl.xsl):
=====================
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:myParam="f:myParam"
>
<xsl:import href="scanlDVC.xsl"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<!-- To be applied on: numList.xml -->

<myParam:myParam>0</myParam:myParam>

<xsl:template match="/">

<xsl:variable name="vZero" select="document('')/*/myParam:*[1]"/>

<xsl:call-template name="scanl">
<xsl:with-param name="pFun" select="\$vFun"/>
<xsl:with-param name="pQ0" select="\$vZero" />
<xsl:with-param name="pList" select="/*/num"/>
</xsl:call-template>

- - - - - - - - - - -

<xsl:call-template name="scanl1">
<xsl:with-param name="pFun" select="\$vFun"/>
<xsl:with-param name="pList" select="/*/num"/>
</xsl:call-template>

</xsl:template>

<xsl:param name="pArg1" select="0"/>
<xsl:param name="pArg2" select="0"/>

<xsl:value-of select="\$pArg1 + \$pArg2"/>
</xsl:template>

</xsl:stylesheet>

Result:
=====
<el>0</el>
<el>1</el>
<el>3</el>
<el>6</el>
<el>10</el>
<el>15</el>
<el>21</el>
<el>28</el>
<el>36</el>
<el>45</el>
<el>55</el>

- - - - - - - - - - -

<el>01</el>
<el>3</el>
<el>6</el>
<el>10</el>
<el>15</el>
<el>21</el>
<el>28</el>
<el>36</el>
<el>45</el>
<el>55</el>

This will not tell you how exactly the problem is solved, but it is enough
to say that the scanl template is general and can solve all problems in this
class. It needs that one specify the step operation as a tempate and pass a
it (a template reference to it) as a parameter.

scanl applies the step operation on the already accumulated value and the
head of the list, saves the current result (the running total), then calls
itself with the tail (rest) of the list, the same step operation and the
latest accumulated value.

The step operation in your case (as I understand it) will be a template that
essentially multiplies two children of the head of the list (e.g. price and
quantity) and adds the result to the accumulated running total.

=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL

"Ficke, Bill" <Bill.Ficke@xxxxxxxxxxxxxxxx> wrote in message
news:92EFB80E551BD511B39500D0B7B0CDCC0A993F8D@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Dimitre,
>
> Thank you for helping.  I've reposted the xml and xsl at the bottom of
this
> message. You should be able to apply the style sheet to this xml without
> error.
>
> The included code should illustrate what I need to accomplish with this
> report.  I've added some comments to the code skeleton below so you can
gain
> a quick understanding of the program's structure.  I think the structure
is
> where the problem lies because it affects the scope of variables.
>
> You should be able to apply the style sheet to this xml without error.
>
> Please see below to examine a summary of how the report is set up:
>
> Report Layout:
>
> Pre-Billing Report Details
> Hourly SubTotal
> Units SubTotal
> SubTotal
> Specialty SubTotal
> Report Total 922.44
> Savings
> Pre-Billing Report
> Hourly SubTotal
> Units SubTotal
> SubTotal
> Specialty SubTotal
> Report Total 797.88
> Savings
> Batch Total 922.44 + 797.88
>
>
> Code Skeleton (I've included the key components to understand the logic):
> <xsl:for-each>
> <xsl:for-each>
> Pre-Billing Report Details
> </xsl:for-each>
>
> <!--Calulate and Set Hourly Subtotal Variable-->
> <xsl:variable name="Hourly">
> <xsl:call-template
> name="Hourly"></xsl:call-template>
> </xsl:variable>
>
> <!--Calulate and Set Subtotal Variable-->
> <xsl:variable name="Lesser">
> <xsl:call-template name="Lesser">
> <xsl:with-param name="Hourly"
> select="\$Hourly"/>
> </xsl:call-template>
> </xsl:variable>
>
> <!--Calulate and Set Savings Subtotal Variable-->
> <xsl:variable name="Savings">
> <xsl:call-template name="Savings">
> <xsl:with-param name="Hourly"
> select="\$Hourly"/>
> </xsl:call-template>
> </xsl:variable>
>
> <!--Calulate and Set Specialty Subtotal Variable-->
> <xsl:variable name="Specialty">
> <xsl:call-template
> name="Specialty"></xsl:call-template>
> </xsl:variable>
>
> <!--Calulate and Set Specialty Subtotal Variable-->
> <!--Notice that it requires input from above variables-->
> <xsl:variable name="GrandTotal">
> <xsl:call-template name="GrandTotal">
> <xsl:with-param name="Hourly"
> select="\$Hourly"/>
> <xsl:with-param name="Lesser"
> select="\$Lesser"/>
> <xsl:with-param name="Specialty"
> select="\$Specialty"/>
> </xsl:call-template>
> </xsl:variable>
>
> <!--PROBLEM AREA:  Since this is being set within a loop,
> the value is lost with each iteration.  So, it really isn't a running
total.
> That is what I need.
> <xsl:variable name="running-total" select="\$running-total +
> \$GrandTotal"/>
>
> <!--Display Subtotal Variables-->
> <!--Hourly SubTotal-->
> <xsl:value-of select="format-number(\$Hourly, '\$#,##0.00')"/>
> <!--Units SubTotal-->
> <xsl:value-of
>
select="format-number(sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST),
> '\$#,##0.00')"/>
> <!--SubTotal-->
> <xsl:value-of select="format-number(\$Lesser, '\$#,##0.00')">
> <!--Specialty SubTotal-->
> <xsl:value-of select="format-number(\$Specialty,
> '\$#,##0.00')"/>
> <!--Report Total-->
> <xsl:value-of select="format-number(\$GrandTotal,
> '\$#,##0.00')">
> <!--Savings-->
> <xsl:value-of select="format-number(\$Savings, '\$#,##0.00')">
> </xsl:for-each>
>
> <!--Batch Total PROBLEM AREA:  Because of loop, this is not
> in the same scope as above, thus yielding 0 -->
> <xsl:value-of select="format-number(\$running-total,
> '\$#,##0.00')"/>
>
> Everything except Batch Total works fine.
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> xmlns:fo="http://www.w3.org/1999/XSL/Format";
> xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
> xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
> xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
> <!-- StyleSheet: CI200PreBillReport.xsl
> Purpose: This stylesheet creates a simple
> HTML table from a Microsoft format recordset.  It lists each data row as a
> row, using
> attribute names as column
> names.
>
> Parameters:
>
> Author: Bill Ficke 09/02/2003
> -->
> <!-- Output is XHTML -->
> <xsl:output method="xml" omit-xml-declaration="yes" indent="no"
> encoding="ISO-8859-1"/>
> <!-- the Report Header of the output table -->
> <!-- the ID of the output table -->
> <xsl:param name="table_id">ms_table</xsl:param>
> <!-- parm to change stylesheet reference -->
> <xsl:param
> name="style_sheet_ref">../../../StyleFiles/D1MasterCSS.css</xsl:param>
> <!-- style class assigned to the table -->
> <xsl:param name="tbl_class"/>
> <!-- style class assigned to the table header cells -->
> <xsl:param name="hdr_cell_class"/>
> <!-- style class assigned to the table cells -->
> <xsl:param name="cell_class"/>
> <!-- init the running total var -->
> <xsl:param name="running-total" select="0"/>
>
>
>
> <!-- match root -->
> <xsl:template match="/">
> <html>
> <title></title>
> <body>
> <xsl:for-each
> select="/xml/rs:data/z:row[@RB_ID !=
> 'B478EB94-F6D0-4133-A796-6718BF854B1C']">
> <xsl:call-template
> <xsl:call-template
> name="PreBillBody"/>
> </xsl:for-each>
> </body>
> </html>
> </xsl:template>
> <table border="0" width="90%">
> <tbody>
> <tr>
> <td class="cia_reportname">
> <xsl:value-of
> </td>
> </tr>
> <tr>
> <td class="cia_company">
> <xsl:value-of
> select="./@CO_NAME"/>
> </td>
> </tr>
> <tr>
> <td>
> <xsl:value-of
> </td>
> </tr>
> <tr>
> <td/>
> </tr>
> <tr>
> <td>
> <table border="0"
> width="100%">
> <tbody>
> <tr>
>
>
> <td>Batch:</td>
>
> <td class="cia_reportdata">
>
> <xsl:value-of select="./@RB_NAME"/>
>
> </td>
>
> <td>Batch Start Date:</td>
>
> <td class="cia_reportdata">
>
> <xsl:value-of select="translate(./@RB_START_DATE, 'T', ' ')"/>
>
> </td>
>
> </tr>
> <tr>
>
> <td></td>
>
> <td class="cia_reportdata">
>
>
>
> </td>
>
> <td>Batch End Date:</td>
>
> <td class="cia_reportdata">
>
> <xsl:value-of select="translate(./@RB_END_DATE, 'T', ' ')"/>
>
> </td>
>
> </tr>
> </tbody>
> </table>
> </td>
> </tr>
> </tbody>
> </table>
> </div>
> <br/>
> </xsl:template>
> <xsl:template name="PreBillBody">
> <table border="0" width="90%">
> <tbody>
>
> <xsl:for-each
> select="./b_children/rr">
> <tr>
> <td>Pre-Billing
> Report:</td>
> <td colspan="2"
> class="cia_reportdata">
>
> <xsl:value-of select="./@RR_NAME"/>
> </td>
> <td>Job
> <td colspan="2"
> class="cia_reportdata">
>
> </td>
> </tr>
> <tr>
> <td
> class="cia_total">Bid Unit</td>
> <td
> class="cia_total">BU Type</td>
> <td
> class="cia_total"></td>
> <td
> class="cia_total" align="right">Price</td>
> <td
> class="cia_total" align="right">Qty</td>
> <td
> class="cia_total" align="right">Total \$</td>
> </tr>
> <xsl:for-each select="./rr_children/rd">
> <tr class="cia_reportdata">
> <td>
> <xsl:value-of select="@RESOURCECODENAME"/>
> </td>
> <td>
> <xsl:value-of select="@BIDUNITNAME"/>
> </td>
> <td>
> <!--<xsl:value-of select="@UNITOFMEASURE"/>-->
> </td>
> <td align="right">
> <xsl:value-of select="format-number(@ACTUALCOST, '\$#,##0.00')"/>
> </td>
> <td align="right">
> <xsl:value-of select="@QUANTITY"/>
> </td>
> <td align="right">
> <xsl:value-of select="format-number(@TOTALCOST, '\$#,##0.00')"/>
> </td>
> </tr>
> </xsl:for-each>
>
>
> <xsl:variable name="Hourly">
> <xsl:call-template name="Hourly"></xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="Lesser">
> <xsl:call-template name="Lesser">
> <xsl:with-param name="Hourly" select="\$Hourly"/>
> </xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="Savings">
> <xsl:call-template name="Savings">
> <xsl:with-param name="Hourly" select="\$Hourly"/>
> </xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="Specialty">
> <xsl:call-template name="Specialty"></xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="GrandTotal">
> <xsl:call-template name="GrandTotal">
> <xsl:with-param name="Hourly" select="\$Hourly"/>
> <xsl:with-param name="Lesser" select="\$Lesser"/>
> <xsl:with-param name="Specialty"
> select="\$Specialty"/>
> </xsl:call-template>
> </xsl:variable>
>
> <xsl:variable name="running-total" select="\$running-total + \$GrandTotal"/>
>
> <xsl:call-template name="PreBillTotal">
> <xsl:with-param name="Hourly" select="\$Hourly"/>
> <xsl:with-param name="Lesser" select="\$Lesser"/>
> <xsl:with-param name="Specialty" select="\$Specialty"/>
> <xsl:with-param name="Savings" select="\$Savings"/>
> <xsl:with-param name="GrandTotal" select="\$GrandTotal"/>
> </xsl:call-template>
>
> </xsl:for-each>
>
> <xsl:call-template name="BatchTotal">
> <xsl:with-param name="running-total"
> select="\$running-total"/>
> </xsl:call-template>
>
> </tbody>
> </table>
> </div>
>
> </xsl:template>
>
> <xsl:template name="Hourly">
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Labor']/@TOTALCOST) +
> sum(./rr_children/rd[@BIDUNITNAME='Equipment']/@TOTALCOST)"/>
> </xsl:template>
>
> <xsl:template name="Lesser">
> <xsl:param name="Hourly"/>
> <xsl:choose>
> <!-- Hourly is 0, so use Unit -->
> <xsl:when test="\$Hourly = 0">
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)"/>
> </xsl:when>
>
> <!-- Unit is 0, so use Hourly -->
> <xsl:when
> test="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) = 0">
> <xsl:value-of select="\$Hourly"/>
> </xsl:when>
>
> <!-- Hourly greater than Unit -->
> <xsl:when test="\$Hourly &gt;
> sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)">
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)"/>
> </xsl:when>
>
> <!-- Unit greater than Hourly -->
> <xsl:when
> test="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) &gt; \$Hourly">
> <xsl:value-of select="\$Hourly"/>
> </xsl:when>
>
> <!-- Otherwise -->
> <xsl:otherwise>
> <xsl:value-of select="0"></xsl:value-of>
> </xsl:otherwise>
> </xsl:choose>
>
> </xsl:template>
>
> <xsl:template name="Savings">
> <xsl:param name="Hourly"/>
>
> <xsl:choose>
>
> <!-- Unit greater than Hourly and Payment Type is Hourly not
> to exceed Unit-->
> <xsl:when test="((./@RR_PAYMENT_TYPE = 2) and
> (sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) &gt; \$Hourly))">
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) - \$Hourly"/>
> </xsl:when>
>
> <!-- Otherwise -->
> <xsl:otherwise>
> <xsl:value-of select="0"></xsl:value-of>
> </xsl:otherwise>
> </xsl:choose>
>
> </xsl:template>
>
>
> <xsl:template name="Specialty">
>
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Specialty']/@TOTALCOST) +
>
sum(./rr_children/rd[@BIDUNITNAME='Maintenance']/@TOTALCOST)"></xsl:value-of
> >
>
> </xsl:template>
>
> <xsl:template name="GrandTotal">
>
> <xsl:param name="Hourly"/>
> <xsl:param name="Lesser"/>
> <xsl:param name="Specialty"/>
>
> <xsl:choose>
>
> <xsl:when test="./@RR_PAYMENT_TYPE = 3">
> <xsl:value-of
> select="\$Specialty"></xsl:value-of>
> </xsl:when>
>
> <xsl:when test="./@RR_PAYMENT_TYPE = 2">
> <xsl:value-of select="\$Lesser +
> \$Specialty"></xsl:value-of>
> </xsl:when>
>
> <xsl:when test="./@RR_PAYMENT_TYPE = 1">
> <xsl:value-of
> select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) +
> \$Specialty"></xsl:value-of>
> </xsl:when>
>
> <xsl:when test="./@RR_PAYMENT_TYPE = 0">
> <xsl:value-of select="\$Hourly +
> \$Specialty"></xsl:value-of>
> </xsl:when>
>
> </xsl:choose>
>
> </xsl:template>
>
> <xsl:template name="PreBillTotal">
> <xsl:param name="Hourly"/>
> <xsl:param name="Lesser"/>
> <xsl:param name="Specialty"/>
> <xsl:param name="Savings"/>
> <xsl:param name="GrandTotal"/>
>
> <tr class="cia_company">
> <td colspan="6" class="cia_total"></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3">Hourly SubTotal</td>
> <td align="right"><xsl:value-of
> select="format-number(\$Hourly, '\$#,##0.00')"/></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3">Units SubTotal</td>
> <td align="right"><xsl:value-of
>
select="format-number(sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST),
> '\$#,##0.00')"/></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="6">&#160;</td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3">SubTotal</td>
> <td align="right"><xsl:value-of
> select="format-number(\$Lesser, '\$#,##0.00')"></xsl:value-of></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3">Specialty Total</td>
> <td align="right"><xsl:value-of
> select="format-number(\$Specialty, '\$#,##0.00')"/></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3" class="cia_subtotal">Report Total</td>
> <td align="right" class="cia_subtotal"><xsl:value-of
> select="format-number(\$GrandTotal, '\$#,##0.00')"></xsl:value-of></td>
> </tr>
>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3" class="cia_subtotal">Savings</td>
> <td align="right" class="cia_subtotal"><xsl:value-of
> select="format-number(\$Savings, '\$#,##0.00')"></xsl:value-of></td>
> </tr>
>
> </xsl:template>
>
>
> <xsl:template name="BatchTotal">
>
> <xsl:param name="running-total"/>
>
> <tr class="cia_company">
> <td colspan="6" class="cia_total">Batch Total</td>
> </tr>
> <tr class="cia_reportdata">
> <td colspan="2"></td>
> <td colspan="3" class="cia_subtotal">Batch
> Total</td>
> <td class="cia_subtotal">
> <xsl:value-of
> select="format-number(\$running-total, '\$#,##0.00')"/>
> </td>
> </tr>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
> xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
> xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
> <s:Schema id="RowsetSchema">
> <s:ElementType name="row" content="eltOnly"
> rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="batch">
> <s:AttributeType name="RB_ID" rs:number="1"
> rs:writeunknown="true" rs:basetable="RP_BATCH_VW" rs:basecolumn="OBJ_ID">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="36" rs:maybenull="false"/>
> </s:AttributeType>
> <s:AttributeType name="RB_NAME" rs:number="2"
> rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW"
> rs:basecolumn="OBJ_NAME">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="100"/>
> </s:AttributeType>
> <s:AttributeType name="RB_START_DATE" rs:number="3"
> rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW"
> rs:basecolumn="BEGINDATE">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType name="RB_END_DATE" rs:number="4"
> rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW"
> rs:basecolumn="ENDDATE">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType name="CO_ID" rs:number="5"
> rs:writeunknown="true" rs:basetable="RP_COMPANY_VW"
rs:basecolumn="OBJ_ID">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="36" rs:maybenull="false"/>
> </s:AttributeType>
> <s:AttributeType name="CO_NAME" rs:number="6"
> rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_COMPANY_VW"
> rs:basecolumn="OBJ_NAME">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="100"/>
> </s:AttributeType>
> rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_COMPANY_VW"
> rs:basecolumn="OBJ_DESC">
> <s:datatype dt:type="string" rs:dbtype="str"
> dt:maxLength="300"/>
> </s:AttributeType>
> <s:ElementType name="b_children" content="eltOnly"
> rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="b_children"
> rs:relation="010000000100000000000000">
> <s:AttributeType name="REL_PARENT"
> rs:number="1" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RELS_DT" rs:basecolumn="REL_PARENT">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="36"/>
> </s:AttributeType>
> <s:AttributeType name="REL_CHILD"
> rs:number="2" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RELS_DT" rs:basecolumn="REL_CHILD">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="36"/>
> </s:AttributeType>
> <s:ElementType name="rr" content="eltOnly"
> rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="rr"
rs:relation="
> 020000000100000000000000">
> <s:AttributeType name="RR_ID"
> rs:number="1" rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW"
> rs:basecolumn="OBJ_ID">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="36" rs:maybenull="false"/>
> </s:AttributeType>
> <s:AttributeType name="RR_NAME"
> rs:number="2" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="OBJ_NAME">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="100"/>
> </s:AttributeType>
> <s:AttributeType
> name="RR_ISAPPROVED" rs:number="3" rs:nullable="true"
rs:writeunknown="true"
> rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="ISAPPROVED">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="RR_APPROVED_DATE" rs:number="4" rs:nullable="true"
> rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW"
> rs:basecolumn="DATEAPPROVED">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType name="RR_NOTES"
> rs:number="5" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="NOTES">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="RR_PAYMENT_TYPE" rs:number="6" rs:nullable="true"
> rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW"
> rs:basecolumn="PMTTYPE">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType name="WR_NAME"
> rs:number="7" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_WORKREQUEST_VW" rs:basecolumn="OBJ_NAME">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="100"/>
> </s:AttributeType>
> rs:number="8" rs:nullable="true" rs:writeunknown="true"
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:ElementType name="rr_children"
> content="eltOnly" rs:CommandTimeout="30" rs:updatable="true"
> rs:ReshapeName="rr_children" rs:relation="010000000100000000000000">
> <s:AttributeType
> name="REL_PARENT" rs:number="1" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RELS_DT" rs:basecolumn="REL_PARENT">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="36"/>
> </s:AttributeType>
> <s:AttributeType
> name="REL_CHILD" rs:number="2" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RELS_DT" rs:basecolumn="REL_CHILD">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="36"/>
> </s:AttributeType>
> <s:ElementType name="rd"
> content="eltOnly" rs:CommandTimeout="30" rs:updatable="true"
> rs:ReshapeName="rd" rs:relation="020000000400000000000000">
> <s:AttributeType
> name="UNITOFMEASURE" rs:number="1" rs:nullable="true"
rs:writeunknown="true"
> rs:basetable="RP_RESOURCECODE_VW" rs:basecolumn="UNITOFMEASURE">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="BIDUNITNAME" rs:number="2" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_BUTYPE_VW" rs:basecolumn="OBJ_NAME">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="100"/>
> </s:AttributeType>
> <s:AttributeType
> name="RESOURCECODENAME" rs:number="3" rs:nullable="true"
> rs:writeunknown="true" rs:basetable="RP_RESOURCECODE_VW"
> rs:basecolumn="OBJ_NAME">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="100"/>
> </s:AttributeType>
> <s:AttributeType
> name="OBJ_ID" rs:number="4" rs:writeunknown="true"
> rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="OBJ_ID">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="36" rs:maybenull="false"/>
> </s:AttributeType>
> <s:AttributeType
> name="CHARGECODE" rs:number="5" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="CHARGECODE">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="ACTUALCOST" rs:number="6" rs:nullable="true">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="13"/>
> </s:AttributeType>
> <s:AttributeType
> name="QUANTITY" rs:number="7" rs:nullable="true" rs:writeunknown="true"
> rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="QUANTITY">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="QUALIFIERCODE" rs:number="8" rs:nullable="true"
rs:writeunknown="true"
> rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="QUALIFIERCODE">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="1500"/>
> </s:AttributeType>
> <s:AttributeType
> name="TOTALCOST" rs:number="9" rs:nullable="true">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="13"/>
> </s:AttributeType>
> <s:extends
> type="rs:rowbase"/>
> </s:ElementType>
> <s:AttributeType
> name="ROWID" rs:number="4" rs:nullable="true" rs:rowid="true"
> rs:basetable="RP_RELS_DT" rs:basecolumn="ROWID" rs:keycolumn="true"
> rs:hidden="true" rs:autoincrement="true">
> <s:datatype
> dt:type="string" rs:dbtype="str" dt:maxLength="18" rs:fixedlength="true"/>
> </s:AttributeType>
> <s:extends
> type="rs:rowbase"/>
> </s:ElementType>
> <s:extends type="rs:rowbase"/>
> </s:ElementType>
> <s:AttributeType name="ROWID" rs:number="4"
> rs:nullable="true" rs:rowid="true" rs:basetable="RP_RELS_DT"
> rs:basecolumn="ROWID" rs:keycolumn="true" rs:hidden="true"
> rs:autoincrement="true">
> <s:datatype dt:type="string"
> rs:dbtype="str" dt:maxLength="18" rs:fixedlength="true"/>
> </s:AttributeType>
> <s:extends type="rs:rowbase"/>
> </s:ElementType>
> <s:extends type="rs:rowbase"/>
> </s:ElementType>
> </s:Schema>
> <rs:data>
> <z:row RB_ID="ECF91362-716C-4923-A245-F5D13817E36B"
> RB_NAME="PIK-100-1" RB_START_DATE="2003-11-21T00:00:00"
> RB_END_DATE="2001-12-31" CO_ID="9B84EFF4-2534-46A3-B635-CF43CBEB7695"
> <b_children
> REL_PARENT="ECF91362-716C-4923-A245-F5D13817E36B"
> REL_CHILD="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
ROWID="AAAA4yAACAAAXq4AAN">
> <rr
> RR_ID="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" RR_NAME="PIK-2415-1"
> Meinardus Dr    ">
> <rr_children
> REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
ROWID="AAAA4yAACAAAXqtAAZ">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Labor" RESOURCECODENAME="1.04 OH"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="       353.28"/>
> </rr_children>
> <rr_children
> REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
> REL_CHILD="EC67AF77-335B-4664-A2A7-2D9950D3CBAF"
ROWID="AAAA4yAACAAAXqtAAb">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Labor" RESOURCECODENAME="1.06 OH"
> OBJ_ID="EC67AF77-335B-4664-A2A7-2D9950D3CBAF" ACTUALCOST="        28.52"
> QUANTITY="13" QUALIFIERCODE="1" TOTALCOST="       370.76"/>
> </rr_children>
> <rr_children
> REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
> REL_CHILD="73F70DC3-2E89-4E51-B303-8280FC723780"
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Equipment" RESOURCECODENAME="2.09 OH"
> OBJ_ID="73F70DC3-2E89-4E51-B303-8280FC723780" ACTUALCOST="         1.80"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="        14.40"/>
> </rr_children>
> <rr_children
> REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
> REL_CHILD="6FF29A2A-4FC0-4E49-85F7-5D6BC4AE3F2F"
ROWID="AAAA4yAACAAAXqtAAf">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Equipment" RESOURCECODENAME="2.15 OH"
> OBJ_ID="6FF29A2A-4FC0-4E49-85F7-5D6BC4AE3F2F" ACTUALCOST="         6.90"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="        55.20"/>
> </rr_children>
> <rr_children
> REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF"
> REL_CHILD="698C6196-3F52-453F-BF55-98CF4C7C36AC"
ROWID="AAAA4yAACAAAXqtAAh">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Equipment" RESOURCECODENAME="2.17 OH"
> OBJ_ID="698C6196-3F52-453F-BF55-98CF4C7C36AC" ACTUALCOST="        16.10"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="       128.80"/>
> </rr_children>
> </rr>
> </b_children>
> <b_children
> REL_PARENT="ECF91362-716C-4923-A245-F5D13817E36B"
> REL_CHILD="9F8828D5-1EDF-4202-B750-5B249EB9F714"
ROWID="AAAA4yAACAAAXq4AAP">
> <rr
> RR_ID="9F8828D5-1EDF-4202-B750-5B249EB9F714" RR_NAME="PIK-2486-2"
> RR_ISAPPROVED="-1" RR_NOTES="INSTALL 40' POLE ON EAST SIDE"
> RR_PAYMENT_TYPE="2" WR_NAME="2486" WR_ADDRESS="9036 N Lamar Blvd    ">
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="2829B95D-E6BB-4DC8-9B17-A55F4D3BBBC4"
ROWID="AAAA4yAACAAAXqoAAN">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Labor" RESOURCECODENAME="1.01 OH"
> OBJ_ID="2829B95D-E6BB-4DC8-9B17-A55F4D3BBBC4" ACTUALCOST="        24.84"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="       198.72"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="BD29808F-0604-40AB-BA0F-C0F0D63CD87C"
ROWID="AAAA4yAACAAAXqoAAP">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Labor" RESOURCECODENAME="1.06 OH"
> OBJ_ID="BD29808F-0604-40AB-BA0F-C0F0D63CD87C" ACTUALCOST="        28.52"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="       228.16"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="3650606F-36A9-4C0F-BE68-2716053E695C"
ROWID="AAAA4yAACAAAXqoAAR">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Equipment" RESOURCECODENAME="2.02 OH"
> OBJ_ID="3650606F-36A9-4C0F-BE68-2716053E695C" ACTUALCOST="        32.00"
> QUANTITY="8" QUALIFIERCODE="1" TOTALCOST="       256.00"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
ROWID="AAAA4yAACAAAXqoAAT">
> <rd UNITOFMEASURE="EA"
> BIDUNITNAME="Unit" RESOURCECODENAME="17.09 OH"
> QUANTITY="1" QUALIFIERCODE="1" TOTALCOST="       298.98"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
ROWID="AAAA4yAACAAAXqoAAV">
> <rd UNITOFMEASURE="EA"
> BIDUNITNAME="Unit" RESOURCECODENAME="19.04 OH"
> QUANTITY="1" QUALIFIERCODE="1" TOTALCOST="       145.20"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="C05C6B74-DE96-40A0-83F2-B88CF47F80E3"
ROWID="AAAA4yAACAAAXqoAAX">
> <rd UNITOFMEASURE="EA"
> BIDUNITNAME="Unit" RESOURCECODENAME="19.06 OH"
> OBJ_ID="C05C6B74-DE96-40A0-83F2-B88CF47F80E3" ACTUALCOST="       106.92"
> QUANTITY="1" QUALIFIERCODE="1" TOTALCOST="       106.92"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="D4AC051D-A911-4899-B52D-FFAC2288B6F4"
ROWID="AAAA4yAACAAAXqoAAZ">
> <rd UNITOFMEASURE="HR"
> BIDUNITNAME="Equipment" RESOURCECODENAME="2.18 OH"
> OBJ_ID="D4AC051D-A911-4899-B52D-FFAC2288B6F4" ACTUALCOST="        23.00"
> QUANTITY="4" QUALIFIERCODE="1.25" TOTALCOST="       115.00"/>
> </rr_children>
> <rr_children
> REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714"
> REL_CHILD="6A15FF13-7E5C-4CF2-8144-1B8EC28E3783"
ROWID="AAAA4yAACAAAXqoAAb">
> <rd UNITOFMEASURE="EA"
> BIDUNITNAME="Unit" RESOURCECODENAME="5.02 OH"
> OBJ_ID="6A15FF13-7E5C-4CF2-8144-1B8EC28E3783" ACTUALCOST="       640.58"
> QUANTITY="1" QUALIFIERCODE="1" TOTALCOST="       640.58"/>
> </rr_children>
> </rr>
> </b_children>
> </z:row>
> </rs:data>
> </xml>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>

XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

```