试试这个样式表,它使用Muenchian 方法按event
元素分组@name
:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- based on
http://stackoverflow.com/a/16509871/2115381
from Dimitre Novatchev
-->
<xsl:key name="kEventVal" match="event" use="@name"/>
<xsl:template match="*">
<xsl:apply-templates select=
"event[generate-id() = generate-id(key('kEventVal',@name)[1])]"/>
</xsl:template>
<xsl:template match="event">
<xsl:value-of select="@name"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="count(key('kEventVal',@name))"/>
<xsl:text> participant</xsl:text>
<xsl:if test="count(key('kEventVal',@name)) > 1 ">
<xsl:text>s</xsl:text>
</xsl:if>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
这将生成以下输出:
christmas: 1 participant
halloween: 1 participant
easter: 2 participants