当前位置: 首页 > 知识库问答 >
问题:

XSLT 2.0如何求和每个唯一项目id的总数

班建义
2023-03-14

请注意,某些ID重复,我只想要每个唯一ID的计数之和。正确的总数是11。

注意:我必须将第一个集上的id编辑为1

输入文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<file>
    <item>
        <id>1</id>
         <count>4</count>
    </item>
    <item>
        <id>2</id>
        <count>7</count>
    </item>
    <item>
        <id>2</id>
        <count>7</count>
    </item>
    <item>
        <id>2</id>
        <count>7</count>
    </item>
</file>
<?xml version="1.0" encoding="UTF-8"?>
<output>
    <totalUniqueItemCount>11</totalUniqueItemCount>
</output>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
    <xsl:output indent="yes" method="xml"/>
    
    <xsl:template match="/file">
        <output>
            <totalUniqueItemCount>
            
                    <xsl:for-each-group select="item" group-by="id">
                
                        <xsl:value-of select="xs:integer(count)"/>
                
                    </xsl:for-each-group>
            
            </totalUniqueItemCount>
        </output>
    </xsl:template>
    
</xsl:stylesheet>
<xsl:output indent="yes" method="xml"/>

<xsl:template match="/file">
    <output>
        <totalUniqueItemCount>
                
                <xsl:value-of select="sum(item[id ne following-sibling::id]/count)"/>
        
        </totalUniqueItemCount>
    </output>
</xsl:template>

共有1个答案

酆翔宇
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xsl:output indent="yes" method="xml"/>

<xsl:key name="itemById" match="file/item" use="id"/>

<xsl:template match="/file">
    <output>
        <totalUniqueItemCount>
            <xsl:value-of select="sum(//item[generate-id(.) = generate-id(key('itemById',id)[1])]/count)"/>
        </totalUniqueItemCount>
    </output>
</xsl:template>

</xsl:stylesheet>

https://xsltfiddle.libertydevelopment.net/3MVNT44/1

 类似资料:
  • 在上面的代码示例中,试图为每个请求生成唯一的txn-id。但是,观察到它正在重复使用相同的数字导致重复。我还尝试使用以下方法根据当前时间生成,当在1秒内触发超过1个请求时,它仍然会导致重复。 任何替代解决方案来为每个请求生成唯一ID,而不管并发情况如何? 提前感谢。

  • 问题内容: 我有以下SQLite代码。如何在每行中插入自动生成的唯一ID? 问题答案: 您可以将其定义为自动递增列: 正如MichaelDorner指出的那样,SQLite文档说an可以做同样的事情,并且速度稍快。该类型的列是其别名,其行为类似于自动增量列。 此行为是隐式的,可能会使经验不足的SQLite开发人员措手不及。

  • 说我有一个地图(myMap)的字符串和对象-地图 如何在myMap中获得K. name每次出现的次数并将其存储在新地图中?新地图将显示K. Name作为键,其值将是它在myMap中出现的次数

  • 问题内容: 我设置了一个向量集,以避免用迭代器分配之类的东西破坏GC(对于HashSet的值或键的每个遍历,对于集合引用和集合迭代器,您将分别获得一个新的/免费的) 无论如何,该方法是每个对象的唯一ID。(64位版本会失败吗?) 但是无论如何它都是可重写的,因此不能保证唯一,也不能保证每个对象实例唯一。 如果要创建“ ObjectSet”,如何为每个对象实例获取保证的唯一ID? 我刚刚找到了这个:

  • 我正在使用网络日志,数据中包含帐户id和会话id。多个会话可以与一个帐户关联。我想创建一个包含帐户id的新数据框,并计算与该帐户关联的唯一会话数。我的df看起来像这样: 我正在使用以下代码: 我得到的输出如下: 我期望的输出 我该怎么修?

  • 脚本会计算所有车辆识别号重复的次数 例如,如果VIN编号重复5次,则意味着将有五个零件到达,因此下一步是检查到达列中的VIN,如果有5个“是”值,则 (重复VIN编号)5/5(是”值的数量) 将触发它将[Master]选项卡零件订单列更改为“是”对于特定的VIN编号。 用户将手动更新[零件]选项卡,到达列时使用“是”或留空。(如果空白,则部分未到达。) 请参阅google工作表模板的链接:http