title: sum the elements of node sets in xslt 1.0
body: <p>I have the following xml whose structure is same but the nodes and there values can be diffrent : </p>
  
  <pre><code>    &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
  &lt;?xml-stylesheet type="text/xsl" href="test.xsl"?&gt;
  &lt;main&gt;
      &lt;_All&gt;
          &lt;_001372&gt;
              &lt;_2012-Oct-10&gt;
                  &lt;Employee_Amount&gt;1.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;2.0&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;3.0&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;4.0&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;5.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;6.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-10&gt;
              &lt;_2012-Oct-11&gt;
                  &lt;Employee_Amount&gt;7.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;0.0&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;0.0&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;0.0&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;0.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;0.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-11&gt;
              &lt;/_001372&gt;
          &lt;_024139&gt;
              &lt;_2012-Oct-10&gt;
                  &lt;Employee_Amount&gt;0.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;313.148999999997&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;3515.5&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;543.86&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;0.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;330.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-10&gt;
              &lt;_2012-Oct-11&gt;
                  &lt;Employee_Amount&gt;10.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;17.0&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;5.0&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;7.0&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;0.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;20.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-11&gt;
              &lt;/_024139&gt;
          &lt;_101010&gt;
              &lt;_2012-Oct-10&gt;
                  &lt;Employee_Amount&gt;5.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;0.0&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;0.0&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;0.0&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;0.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;0.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-10&gt;
              &lt;_2012-Oct-11&gt;
                  &lt;Employee_Amount&gt;0.0&lt;/Employee_Amount&gt;
                  &lt;Combo_Savings_Amount&gt;0.0&lt;/Combo_Savings_Amount&gt;
                  &lt;Total_Sales&gt;0.0&lt;/Total_Sales&gt;
                  &lt;Dine_in_Amount&gt;0.0&lt;/Dine_in_Amount&gt;
                  &lt;Promos_Actual&gt;0.0&lt;/Promos_Actual&gt;
                  &lt;Cash_Count&gt;0.0&lt;/Cash_Count&gt;
                  &lt;/_2012-Oct-11&gt;
              &lt;/_101010&gt;
      &lt;/_All&gt;
  &lt;/main&gt;
  </code></pre>
  
  <p>I need to sum all the elements of a store. for example i need to sum Employee_Amount of dates date01 and date02. same as all the nodes. What I have try is as below :</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="US-ASCII"?&gt;
  &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0"&gt;
      &lt;xsl:output method="html" indent="yes" /&gt;
      &lt;xsl:template match="/*"&gt;
          &lt;table border="1" cellspacing="1" cellpadding="1"
              align="center"&gt;
              &lt;tr bgcolor="#8181F7"&gt;
                  &lt;xsl:apply-templates select="/*/*/*/*" mode="ColHeader" /&gt;
              &lt;/tr&gt;
              &lt;tr bgcolor="#00FFFF"&gt;
                  &lt;td&gt;
                      &lt;xsl:value-of
                          select="translate(name(child::*),'_',' ')" /&gt;
                  &lt;/td&gt;
                  &lt;td&gt;&amp;#160;&lt;/td&gt;
                  &lt;xsl:for-each select="/*[1]/*[1]/*[1]/*[1]/*"&gt;
                      &lt;xsl:variable name="pos" select="position()" /&gt;
                      &lt;td&gt;
                          &lt;xsl:value-of
                              select='format-number(sum(/*/*/*/*/*[$pos]),"#.##")' /&gt;
                      &lt;/td&gt;
                  &lt;/xsl:for-each&gt;
              &lt;/tr&gt;
              &lt;xsl:apply-templates select="/*/*/*" mode="values" /&gt;
          &lt;/table&gt;
      &lt;/xsl:template&gt;
  
      &lt;xsl:template match="/*/*/*/*" mode="ColHeader"&gt;
          &lt;xsl:if test="position() = 1"&gt;
              &lt;th&gt;Region&lt;/th&gt;
              &lt;th&gt;Store&lt;/th&gt;
              &lt;xsl:for-each select="./*"&gt;
                  &lt;th&gt;
                      &lt;xsl:value-of select="translate(name(),'_',' ')" /&gt;
                  &lt;/th&gt;
              &lt;/xsl:for-each&gt;
          &lt;/xsl:if&gt;
      &lt;/xsl:template&gt;
      &lt;xsl:template match="/*/*/*" mode="values"&gt;
          &lt;xsl:for-each select="."&gt;
              &lt;tr&gt;
                  &lt;td&gt;&amp;#160;&lt;/td&gt;
                  &lt;td&gt;
                      &lt;xsl:value-of select="translate(name(),'_',' ')" /&gt;
                  &lt;/td&gt;
                  &lt;xsl:apply-templates select="./*/*" mode="rollupVal"/&gt;
              &lt;/tr&gt;
          &lt;/xsl:for-each&gt;
      &lt;/xsl:template&gt;
      &lt;xsl:template match="/*/*/*/*/*" mode="rollupVal"&gt;
          &lt;xsl:variable name="pos1" select="current()"/&gt;
                      &lt;td&gt;
                          &lt;xsl:value-of select='format-number(sum(./node()[$pos1]), "#.##")'/&gt;
                      &lt;/td&gt;
      &lt;/xsl:template&gt;
  &lt;/xsl:stylesheet&gt;
  </code></pre>
  
  <p>But I am unable to sum those rows. Please help me. Thanks</p>
  
  <p>Edited: The output HTML is: </p>
  
  <pre><code>&lt;table align="center" cellpadding="1" cellspacing="1" border="1"&gt;
      &lt;tr bgcolor="#8181F7"&gt;
      &lt;th&gt;Region&lt;/th&gt;&lt;th&gt;Store&lt;/th&gt;&lt;th&gt;Employee Amount&lt;/th&gt;&lt;th&gt;Combo Savings Amount&lt;/th&gt;&lt;th&gt;Total Sales&lt;/th&gt;&lt;th&gt;Dine in Amount&lt;/th&gt;&lt;th&gt;Promos Actual&lt;/th&gt;&lt;th&gt;Cash Count&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr bgcolor="#00FFFF"&gt;
          &lt;td&gt; All&lt;/td&gt;
          &lt;td&gt;&amp;nbsp;&lt;/td&gt;
          &lt;td&gt;18&lt;/td&gt;
          &lt;td&gt;332.15&lt;/td&gt;
          &lt;td&gt;3523.5&lt;/td&gt;
          &lt;td&gt;554.86&lt;/td&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;356&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;nbsp;&lt;/td&gt;
          &lt;td&gt; 001372 44CLOSED&lt;/td&gt;
          &lt;td&gt;8&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;nbsp;&lt;/td&gt;
          &lt;td&gt; 024139&lt;/td&gt;
          &lt;td&gt;10&lt;/td&gt;
          &lt;td&gt;330.15&lt;/td&gt;
          &lt;td&gt;3520.5&lt;/td&gt;
          &lt;td&gt;550.86&lt;/td&gt;
          &lt;td&gt;0&lt;/td&gt;
          &lt;td&gt;350&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/table&gt;
  </code></pre>