提问人:MagicWorld 提问时间:11/17/2023 更新时间:11/18/2023 访问量:23
计算在 XSLT 中分组后的元素数
Count the number of elements after grouping in XSLT
问:
我们有 XML:
<?xml version="1.0" encoding="utf-8"?>
<items>
<element name="Name1" value="Text1"/>
<element name="Name1" value="Text3"/>
<element name="Name1" value="Text4"/>
<element name="Name3" value="Text5"/>
<element name="Name3" value="Text8"/>
</items>
我们需要按名称对元素进行分组并计算它们的数量。 输出 XML:
<?xml version="1.0"?>
<goods>
<group name="Name1" sum="3">
<item>Text1</item>
<item>Text3</item>
<item>Text4</item>
</group>
</group>
<group name="Name3" sum="2">
<item>Text5</item>
<item>Text8</item>
</group>
</goods>
我使用蒙克分组。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="PC" match="element" use="@name"/>
<xsl:template match="items">
<goods>
<xsl:apply-templates select="element[generate-id(.) = generate-id(key('PC',@name))]"/>
</goods>
</xsl:template>
<xsl:template match="element">
<group name="{@name}">
<xsl:for-each select="key('PC',@name)">
<item>
<xsl:value-of select="@value"/>
</item>
</xsl:for-each>
</group>
</xsl:template>
</xsl:stylesheet>
但是不知道分组后如何计算元素的数量。
答:
1赞
Daniel Haley
11/18/2023
#1
只需在 .count()
key()
例。。。
<xsl:template match="element">
<group name="{@name}" sum="{count(key('PC',@name))}">
<xsl:for-each select="key('PC',@name)">
<item>
<xsl:value-of select="@value"/>
</item>
</xsl:for-each>
</group>
</xsl:template>
评论