在XSLT 1.0中进行分组和计数

时间:2013-11-07 04:57:38

标签: 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中重复了两次。

逻辑如何运作?

1 个答案:

答案 0 :(得分: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