You need to enable JavaScript to run this app. XPath1.0单语句实现XML指定元素不同取值的出现次数统计
优惠活动
大模型
产品
解决方案
定价
更多

XPath1.0单语句实现XML指定元素不同取值的出现次数统计

问题原因

你写的count(//ZDPANR[.=(.)])中,谓词[]内部的.的上下文是当前正在被筛选的ZDPANR节点,两个.都指向同一个正在被判断的节点,相当于判断永远为真,最终统计的是所有ZDPANR节点的总数量,自然得不到正确的分组统计结果。

解决方案

XSLT 1.0 提供了标准的current()函数,该函数可以直接返回当前for-each循环上下文的节点,也就是你当前遍历到的去重后的ZDPANR节点,完全符合你单条XPath实现的需求。

修改后的代码如下:

<xsl:for-each select="//ZDPANR[not(.=following::ZDPANR) and .!='']">
  <td>
    <xsl:value-of select="count(//ZDPANR[. = current()])"/>
  </td>
</xsl:for-each>

验证结果

针对你提供的示例XML,运行后会依次输出3、1、2,对应PALLET1出现3次、PALLET3出现1次、PALLET2出现2次,和实际取值的统计结果完全正确。


内容的提问来源于stack exchange,提问作者AbRe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 17:57:05