I'm kind of new to xslt and need help getting a grand total of all overtime hours. I can get each individuals total of overtime hours, but not a grand total. Any help is greatly appreciated.
Here is an XML sample:
Code:
<?xml version='1.0' encoding='UTF-8'?><dd:Report_Data xmlns:dd="urn:com.ptl.report/CR_Headcount">
<dd:Report_Entry><dd:Today>03292016 16:41</dd:Today>
<dd:Employee_ID>12345</dd:Employee_ID>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>-10.5</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>4</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>10.25</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>12</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>15</dd:OT_Hours>
</dd:Payroll_Result_Lines__All_>
</dd:Report_Entry>
<dd:Report_Entry><dd:Today>03292016 16:41</dd:Today>
<dd:Employee_ID>23456</dd:Employee_ID>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>8</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>9.5</dd:OT_Hours>
</dd:Report_Entry>
<dd:Report_Entry><dd:Today>03292016 16:41</dd:Today>
<dd:Employee_ID>34567</dd:Employee_ID>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>4</dd:OT_Hours>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>9.5</dd:OT_Hours>
</dd:Payroll_Result_Lines__All_>
</dd:Report_Entry>
<dd:Report_Entry><dd:Today>03292016 16:41</dd:Today>
<dd:Employee_ID>45678</dd:Employee_ID>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>10</dd:OT_Hours>
<dd:Amount>263.4</dd:Amount></dd:Payroll_Result_Lines__All_>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>15</dd:OT_Hours>
</dd:Payroll_Result_Lines__All_>
</dd:Report_Entry>
<dd:Report_Entry><dd:Today>03292016 16:41</dd:Today>
<dd:Employee_ID>56789</dd:Employee_ID>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>16</dd:OT_Hours>
<dd:Amount>433.2</dd:Amount></dd:Payroll_Result_Lines__All_>
<dd:Payroll_Result_Lines__All_><dd:OT_Hours>16</dd:OT_Hours>
</dd:Payroll_Result_Lines__All_>
</dd:Report_Entry>
</dd:Report_Data>
Here is a sample of my xsl file. I am using Saxon PE 9.5.1.7
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="no" method="text"/>
<xsl:template match="dd:Report_Data" xmlns:dd="urn:com.ptl.report/CR_Headcount">
<xsl:for-each select="dd:Report_Entry">
<xsl:variable name="tmpTotal">
<xsl:value-of select="sum(dd:Payroll_Result_Lines__All_/dd:OT_Hours)"/>
</xsl:variable>
<xsl:value-of select="sum($tmpTotal)"/>
<xsl:call-template name="insertDelimiter"/>
</xsl:for-each>
<xsl:call-template name="insertNewLine"/>
<xsl:value-of select="count(dd:Report_Entry)"/>
</xsl:template>
<!-- Starting function library section here -->
<xsl:template name="insertDelimiter">
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template name="insertNewLine">
<!-- Used to insert a new line into the XML output -->
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
The output i get is:
30.75|17.5|13.5|25|32|
5
The output i would like is a sum of the first line in the output above:
118.25|
5