xml - XSLT - 问题从同一记录中获取 2 个值的总和
问题描述
我无法使用 XSLT 从 XML 下面获取 TotalPay 值。TotalPay 是总工资与每个员工的工资类型数量相对应的总和。请参阅下面的 XML 数据和我试图实现的预期结果。
<---XML Data---->
<Payroll_Data>
<EmpId>1000</EmpId>
<FirstName>Mark</FirstName>
<LastName>Henry</LastName>
<Salary>
<Type>B</Paytype>
<GrossPay>1000.50</GrossPay>
</Salary>
<Salary>
<Type>X</Paytype>
<GrossPay>847.50</GrossPay>
</Salary>
</Payroll_Data>
<Payroll_Data>
<EmpId>1001</EmpId>
<FirstName>John</FirstName>
<LastName>Diggle</LastName>
<Salary>
<Type>B</Paytype>
<GrossPay>800.98</GrossPay>
</Salary>
<Salary>
<Type>X</Paytype>
<GrossPay>630.50</GrossPay>
</Salary>
<Salary>
<Type>Y</Paytype>
<GrossPay>600.50</GrossPay>
</Salary>
</Payroll_Data>
<----Expected Result---->
EmpId FirstName LastName Type GrossPay TotalPay
1000 Mark Henry B 1000.50 1847.98 (1000.50+847.48)
1000 Mark Henry X 847.48 1847.98
1001 John Diggle B 800.98 2031.98 (800.98+630.50+600.50)
1001 John Diggle X 630.50 2031.98
1001 John Diggle Y 600.50 2031.98
解决方案
它sum(../Salary/GrossPay)
在元素的上下文中很简单,Salary
因为数据似乎已经分组:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="//Salary"/>
</xsl:template>
<xsl:template match="Salary">
<xsl:value-of select="../(EmpId, FirstName, LastName), Type, GrossPay, sum(../Salary/GrossPay)" separator="	"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
推荐阅读
- mysql - 获取最新线程或评论
- generics - Kotlin 函数打印所有枚举的序数/名称对
- python - pandas groupby 并在不同类型之间使用数字
- c - 有没有办法将信息保存到结构的指针
- angular - 使用 webpack 和 gulp 将大型角度模块拆分为 AEM 项目中的多个模块
- javascript - 正则表达式用括号替换所有出现的文本
- javascript - 在标签集中使用数据表时防止 R .rmd html 文档跳过
- ruby - Ruby 脚本无法打开 SQLite3 文件,但只能在作为守护进程运行时打开
- java - UnboundID LDAP 和 Squid 代理
- parse-server - 为什么带有聚合的日期查询在解析服务器中不起作用?