XSLT 1.0 中的分组和计数

Posted

技术标签:

【中文标题】XSLT 1.0 中的分组和计数【英文标题】:Grouping and counting in XSLT 1.0 【发布时间】:2013-11-18 15:31:47 【问题描述】:

我已经输入了 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 次。

逻辑将如何运作?

【问题讨论】:

我无法在此处编写代码,因为它是图像输出。我尝试了 group 和 count 功能,但没有收到我想要的结果。 【参考方案1】:

在 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

【讨论】:

感谢您的回答。我想在没有模板的情况下应用上述逻辑。如果可以的话。虽然我应用了 ,它生成了 Paket,Parti ......但是当我添加了 ,它没有转到下一行。此外, 不起作用。因为我没有应用模板。

以上是关于XSLT 1.0 中的分组和计数的主要内容,如果未能解决你的问题,请参考以下文章

xslt 1.0中的嵌套分组

如何使用 Muenchian 分组 XSLT 1.0 在每个目录中按标题分组

XSLT 1.0:分组和删除重复项

Muenchian 分组 XSLT 1.0 多重分组

在 XSLT 1.0 和分组方面需要帮助

xslt 1.0 使用复合键分组(在不同级别)