0

i have an example like:

<AgentInfo>
      <NumberOfAgent>
         <NUMBER_OF_AGENTS>24</NUMBER_OF_AGENTS>
         <DAY>2018-10-10T00:00:00+01:00</DAY>
         <SKILLSET_NAME>SOA</SKILLSET_NAME>
      </NumberOfAgent>
      <NumberOfAgent>
         <NUMBER_OF_AGENTS>3</NUMBER_OF_AGENTS>
         <DAY>2018-10-10T00:00:00+01:00</DAY>
         <SKILLSET_NAME>C#</SKILLSET_NAME>
      </NumberOfAgent>
      <NumberOfAgent>
         <NUMBER_OF_AGENTS>8</NUMBER_OF_AGENTS>
         <DAY>2018-10-10T00:00:00+01:00</DAY>
         <SKILLSET_NAME>Skillset2</SKILLSET_NAME>
      </NumberOfAgent>
      <NumberOfAgent>
         <NUMBER_OF_AGENTS>1</NUMBER_OF_AGENTS>
         <DAY>2018-10-11T00:00:00+01:00</DAY>
         <SKILLSET_NAME>Uninstalling Windows</SKILLSET_NAME>
      </NumberOfAgent>
   </AgentInfo>

i want to calculate sum of value when dates matched (values of same day) for example : for day 2018-10-10 the sum will be 35. i tried a lot without no luck.

Scorpion
  • 577
  • 4
  • 21

2 Answers2

0

The trick is to group the entries first by DAY and then sum within the groups. Try the following:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" />
<xsl:template match="AgentInfo">
    <AllUsers>
        <xsl:for-each-group select="NumberOfAgent" group-by="./DAY">
<group>
<count><xsl:value-of select="sum(current-group()/NUMBER_OF_AGENTS)"/></count> 
<day><xsl:value-of select="DAY"/></day>
</group>
        </xsl:for-each-group>
    </AllUsers>
</xsl:template>

</xsl:stylesheet>
ophychius
  • 2,623
  • 2
  • 27
  • 49
  • thanks man! this answer helps me a lot with little changes according to my business case... thank you – Scorpion Oct 28 '18 at 10:14
0
?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" />
<xsl:template match="/">
<xsl:value-of select="sum(/AgentInfo/NumberOfAgent[DAY='2018-10-10T00:00:00+01:00']/NUMBER_OF_AGENTS)"/>
</xsl:template>
</xsl:stylesheet>
Marc Stroebel
  • 2,295
  • 1
  • 12
  • 21