xml - XSLT 1.0 中的分组和计数

标签 xml xslt xpath xslt-1.0 xslt-grouping

我有输入 XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <FT>Paket</FT>
   <FT>Parti</FT>
   <FT>Paket</FT>
   <FT>Styche</FT>
   <FT>Styche</FT>
</root>

我希望我的输出显示如 -

Paket   2
Parti   1
Styche  2

它是对元素的值和编号进行分组。显示重复值的总数。 就像 Paket 指示值一样,它在 XML 中重复了 2 次。

逻辑如何运作?

最佳答案

在 XSLT 1.0 中,使用 Muenchian 分组:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes"/>
  <xsl:key name="k" match="FT" use="."/>

  <xsl:template match="/*">
    <xsl:apply-templates select="FT[generate-id() = generate-id(key('k', .))]"/>
  </xsl:template>

  <xsl:template match="FT">
    <xsl:value-of select="concat(., ' ', count(key('k', .)))"/>
    <xsl:text>&#xa;</xsl:text>
  </xsl:template>

</xsl:stylesheet>

输出:

Paket 2
Parti 1
Styche 2

关于xml - XSLT 1.0 中的分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828294/

相关文章:

java - 将 setParameter 与节点集一起使用时,会引发异常 "Invalid conversion from java.lang.String to node-set"

.net - XSLT 和 T4 代码生成方法之间有什么区别?

selenium - 如何使用 RobotFramework 和 Selenium 从网页中的 "Page Should Contain"获取 xpath

c# - 如何使用 XPathSelectElement 提取元素

java - android fragment 可以在api 3.0上使用,但不能在2.2上使用

asp.net - XSLT 母版页?

c# - 使用 html Agility Pack 选择属性值

python - Scrapy XPath - 无法获取范围内的文本

java - 添加一些代码行后,应用崩溃

xml - 将数据从 excel 导出到 XML 模式在嵌套列表中有嵌套列表