I am trying to format a report and I have tables that will span multiple pages with various items/fees, and what i would like to do ideally is to display a running total for each page in the table footer, basically i want the sum of the values in my table from the current page back to the first page to display at the bottom. Is there any way to achieve this?
<fo:table width="100%" border-style="groove" border-width="2pt" background-repeat="repeat">
<fo:table-column column-width="5%" />
<fo:table-column column-width="60%" />
<fo:table-column column-width="5%" />
<fo:table-column column-width="7.5%" />
<fo:table-column column-width="7.5%" />
<fo:table-column column-width="7.5%" />
<fo:table-column column-width="7.5%" />
<fo:table-footer border-top-style="dashed" border-bottom-style="dashed">
<fo:table-cell display-align="center">
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block text-align="center">
Page <fo:page-number/>
<xsl:text> OF </xsl:text>
<fo:page-number-citation ref-id="end" />
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
</fo:table-cell>
<fo:table-cell display-align="center">
</fo:table-cell>
<fo:table-cell display-align="center">
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block text-align="end">
Page Total:
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
</fo:table-cell>
</fo:table-footer>
<fo:table-body>
<xsl:for-each select="/receipt_invoice/details/product_lot">
<xsl:variable name="untitled" select="." />
<fo:table-row>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="right">
<fo:block>
<xsl:value-of select="lot/quantity" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block>
<fo:table width="100%" border-style="none" border-width="2pt" background-repeat="repeat">
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell border-style="none" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="before">
<fo:block>
<fo:block>
<xsl:value-of select="product/code" />
</fo:block>
<fo:block>
Lot Qty:
<xsl:value-of select="lot/quantity" />
</fo:block>
<fo:block>
<xsl:text>
 
</xsl:text>
</fo:block>
<fo:block>
<xsl:value-of select="lot/identifier" />
</fo:block>
<fo:block>
<xsl:value-of select="lot/lot_components/component/label" />
</fo:block>
<fo:block>
<xsl:value-of select="lot/lot_components/component/value" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="none" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="before">
<fo:block>
<fo:block>
<xsl:value-of select="product/first_description" />
</fo:block>
<fo:block>
<xsl:value-of select="lot/csd/csd_line" />
</fo:block>
<fo:block>
<xsl:value-of select="lot/csd/set_description" />
</fo:block>
<fo:block>
<xsl:value-of select="lot/lot_components/component/label" />
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
Line Number:
<xsl:value-of select="line_number" />
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="center">
<fo:block>
<xsl:value-of select="product/unit_of_measure" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="center">
<fo:block>
<xsl:value-of select="stock_charges/storage_rate" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="center">
<fo:block>
<xsl:value-of select="stock_charges/storage_amount" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="center">
<fo:block>
<xsl:value-of select="stock_charges/handling_rate" />
</fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" border-width="1pt" border-color="black" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block text-align="center">
<fo:block>
<xsl:value-of select="stock_charges/handling_amount" />
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
Revision:
So I have decided to use a page footer to display the subtotal on each page, and have set up a marker in my table that simply returns the grand total just to test it out, but now what i was think was that i could try to somehow get the position in my xml file the node was taken from and use something like...
<xsl:value-of select="sum(preceding::value[the_position]"/>
Where value would actually be the name of the charge being totaled up, is this something that could work? If have been trying different things but I am uncertain of the syntax and how to return the position.