如何获得正确的工资总额

时间:2014-04-08 13:40:23

标签: xml xslt

<?xml version="1.0" encoding="UTF-8"?>
<employees>
  <employee>
    <name >
      <firstName>Arshad </firstName>
      <lastName lang="EN"> khan </lastName>
    </name>
    <dateOfBirth>
      <day>Monday</day>
      <month>June</month>
      <year>1978</year>
    </dateOfBirth>
    <address>
      <address1>7 pickering road </address1>
      <address2> barking Essex</address2>
      <city> London </city>
    </address>
    <department>
      computer Science
    </department>
    <salary> 10000 
    </salary>
  </employee>
  <employee>
    <name>
      <firstName> khalid </firstName>
      <lastName> Niazi</lastName>
    </name> 
    <salary>3000</salary>
  </employee>
</employees>

在这个XML文档中,我试图获得所有工资的sum()

我尝试使用XSLT,但它返回10000和3000,但我需要所有员工的工资总额。我需要10000 + 3000的工资总额,或者所有员工的工资只显示工资总额。

目前正在计算所有工资总和的XSLT:

<xsl:template match="employees/employee">
  <xsl:value-of select="sum(salary)" />
</xsl:template>       

1 个答案:

答案 0 :(得分:2)

您在原始问题中显示的模板:

<xsl:template match="employees/employee">
  <xsl:value-of select="sum(salary)" />
</xsl:template>       

将为每个 employee元素触发一次,并打印出该特定salary内所有employee元素的总和(只有一个)每个salary,因此sum的结果将只是该单个元素的值。如果您想要所有员工的所有工资的总和,那么您需要一个与下一级别相匹配的模板:

<xsl:template match="employees">
  <xsl:value-of select="sum(employee/salary)" />
</xsl:template>