给出以下示例,
https://xsltfiddle.liberty-development.net/3NzcBsV
每个描述只能发生一次。如何在输出报告的第一行中添加在所讨论的xml文件中多次发生的描述元素的数量?
期望产出:
3 (because "Light Belgian waffles covered with an assortment of fresh berries and whipped cream" was found 2 times, and "Two of our famous Belgian Waffles with plenty of real maple [syrup]" was found 3 times, thus 1+2=3 )
02 Light Belgian waffles covered with an assortment of fresh berries and whipped cream 900
04 Light Belgian waffles covered with an assortment of fresh berries and whipped cream 100
01 Two of our famous Belgian Waffles with plenty of real maple [syrup] 650
01 Two of our famous Belgian Waffles with plenty of real maple [syrup] 350
05 Two of our famous Belgian Waffles with plenty of real maple [syrup] 250发布于 2018-05-15 21:38:08
将分组元素存储到容器元素中,并计数不同组的项(或根据您的需要从该计数中减去一个):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0">
<xsl:output method="text" />
<xsl:template match="breakfast_menu">
<xsl:variable name="groups">
<xsl:for-each-group select="food" group-by="description">
<xsl:sort select="current-grouping-key()"/>
<xsl:if test="current-group()[2]">
<group key="{current-grouping-key()}">
<xsl:copy-of select="current-group()"/>
</group>
</xsl:if>
</xsl:for-each-group>
</xsl:variable>
<xsl:value-of select="sum($groups/group!(count(food) - 1))"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="$groups/group/food"/>
</xsl:template>
<xsl:template match="food">
<xsl:value-of select="name, description, string(calories)" separator="	"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>https://stackoverflow.com/questions/50331888
复制相似问题