gpt4 book ai didi

xml - 具有分组和分组总数的XSLT

转载 作者:行者123 更新时间:2023-12-03 17:18:16 24 4
gpt4 key购买 nike

我有以下XML数据。我无法控制此数据的结构,这就是我接收数据的方式。

<data>
<row>
<value name="CustomerID">1</value>
<value name="CustomerName">Joe</value>
<value name="Cost">22.50</value>
</row>
<row>
<value name="CustomerID">1</value>
<value name="CustomerName">Joe</value>
<value name="Cost">55.50</value>
</row>
<row>
<value name="CustomerID">2</value>
<value name="CustomerName">Jane</value>
<value name="Cost">10</value>
</row>
<row>
<value name="CustomerID">2</value>
<value name="CustomerName">Jane</value>
<value name="Cost">13.50</value>
</row>
<row>
<value name="CustomerID">3</value>
<value name="CustomerName">Jim</value>
<value name="Cost">50</value>
</row>
</data>


我需要使用XSLT v1.0来显示按客户ID分组的数据,以及每个客户的总计数据。我尝试搜索许多文章,但没有一种具有这种奇怪的结构。

最佳答案

用:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:key name="k" match="row" use="value[@name = 'CustomerID']"/>

<xsl:template match="data">
<xsl:copy>
<xsl:apply-templates select="row[generate-id(.) = generate-id(key('k', value[@name = 'CustomerID']))]"/>
</xsl:copy>
</xsl:template>

<xsl:template match="row">
<xsl:copy>
<xsl:copy-of select="value[@name = 'CustomerID']"/>
<xsl:copy-of select="value[@name = 'CustomerName']"/>
<sum>
<xsl:value-of select="sum(key('k', value[@name = 'CustomerID'])/value[@name = 'Cost'])"/>
</sum>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>


输出:

<data>
<row>
<value name="CustomerID">1</value>
<value name="CustomerName">Joe</value>
<sum>78</sum>
</row>
<row>
<value name="CustomerID">2</value>
<value name="CustomerName">Jane</value>
<sum>23.5</sum>
</row>
<row>
<value name="CustomerID">3</value>
<value name="CustomerName">Jim</value>
<sum>50</sum>
</row>
</data>

关于xml - 具有分组和分组总数的XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com