Xml 如何使用XSL计算元素值的出现次数?

Xml 如何使用XSL计算元素值的出现次数?,xml,date,xslt,Xml,Date,Xslt,我试图用xsl计算不同节点值的出现次数。下面是一个xml示例: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <data> <hit><date>2021-03-23</date><time>04:1

我试图用xsl计算不同节点值的出现次数。下面是一个xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<data>
<hit><date>2021-03-23</date><time>04:13:01 pm</time><type>viewed</type><info>twitter</info></hit>
<hit><date>2021-03-23</date><time>05:01:49 pm</time><type>conversion</type><info>instagram</info></hit>
<hit><date>2021-04-06</date><time>08:03:09 am</time><type>viewed</type><info>youtube</info></hit>
<hit><date>2021-04-07</date><time>07:27:41 pm</time><type>viewed</type><info>youtube</info></hit>
<hit><date>2021-04-07</date><time>10:32:45 pm</time><type>viewed</type><info>youtube</info></hit>
</data>

2021-03-2304:13:01 pmviewedtwitter
2021-03-2305:01:49 pmconversioninstagram
2021-04-0608:03:09 amviewedyoutube
2021-04-0707:27:41 pmviewedyoutube
2021-04-0710:32:45 pmviewedyoutube
我想要一个2021-03-23=2021-04-06=12021-04-07=2的输出,计算数据/命中/日期中值的出现次数

另外,按类型区分也很好。例如:2021-03-23=2次点击、1次查看和1次转换


谢谢您的帮助。

这似乎是一个分组问题。您没有指定使用哪个版本的XSLT,也没有发布您尝试过的示例

在XSLT2.0+中,使用xsl:for-each-group进行分组要容易得多。XSLT1.0中的分组是使用

我将使用最坏的情况,并假设XSLT1.0。看看上面的链接,了解一下门钦族的分组,这样我的例子就有意义了

我要做的是创建一个键,将所有
hit
元素按其
date
子元素分组。 我将创建另一个键,通过组合
date
type
元素来分组
hit
元素

然后可以使用这些键进行分组和计数

XML输入


2021-03-2304:13:01 pmviewedtwitter
2021-03-2305:01:49 pmconversioninstagram
2021-04-0608:03:09 amviewedyoutube
2021-04-0707:27:41 pmviewedyoutube
2021-04-0710:32:45 pmviewedyoutube
XSLT1.0

XML输出

2021-03-23=2次点击,1次查看,1次转换
2021-04-06=点击1次,查看1次
2021-04-07=点击2次,查看2次

小提琴手:谢谢你的回答和解释。注意不包括该版本。我使用的是1.0版。自从我使用xsl以来已经有一段时间了,我有一个随机的、快速的需求来使用它。