xslt-3 中的计数总和

杰卡泰

鉴于以下示例,

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
马丁·霍南

将分组元素存储到容器元素中,并计算不同组的项目数(或根据需要从该计数中减去一个):

<?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>&#10;</xsl:text>
      <xsl:apply-templates select="$groups/group/food"/>
  </xsl:template>

  <xsl:template match="food">
      <xsl:value-of select="name, description, string(calories)" separator="&#9;"/>
      <xsl:text>&#10;</xsl:text>
  </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/3NzcBsV/4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章