<?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>
答案 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>