如何计数XSLT中的条目



我对XSLT非常陌生,我想为events列表生成参与者的计数。这是我的XML:

<events>
    <event name="christmas"/>
    <event name="halloween"/>
    <event name="easter"/>
    <event name="easter"/>
</events>

我需要的是这样的东西:

Christmas: 1 participant
Halloween: 1 participant
Easter: 2 participants

这可以用XSLT以任何方式完成吗?

谢谢你的帮助!

试试这个样式表,它使用Muenchian Methodevent元素按它们的@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>&#10;</xsl:text>
</xsl:template>
</xsl:stylesheet>

将生成以下输出:

christmas: 1 participant
halloween: 1 participant
easter: 2 participants

相关内容

  • 没有找到相关文章

最新更新