gpt4 book ai didi

xml - 是否可以使用XSLT对这些数据求和?

转载 作者:行者123 更新时间:2023-12-03 17:29:51 25 4
gpt4 key购买 nike

是否可以使用XSLT对这些数据求和?我有以下数据集

<?xml version="1.0" encoding="utf-8"?>
<data>
<recordType>EXP</recordType>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>658.82</LdgCost>
<LabCostIn>0.0</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>0.0</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
<recordType>ADD</recordType>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>932.5</LdgCost>
<LabCostIn>104.64</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>260.36</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
<recordType>ADD</recordType>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>932.5</LdgCost>
<LabCostIn>104.64</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>260.36</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
<recordType>ADD</recordType>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>932.5</LdgCost>
<LabCostIn>104.64</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>260.36</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
<recordType>EXP</recordType>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>0.0</LdgCost>
<LabCostIn>322.95</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>0.0</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
</data>


我试图将recordType ='EXP'下的值总计为一个总和,recordType ='ADD'下的值总计为另一总和。这可能吗,还是我需要将XML格式更改为类似的格式?

<?xml version="1.0" encoding="utf-8"?>
<data>
<recordType value='EXP'>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>658.82</LdgCost>
<LabCostIn>0.0</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>0.0</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
</recordType>
<recordType value='ADD'>
<AppContribAmt>0.0</AppContribAmt>
<LdgCost>932.5</LdgCost>
<LabCostIn>104.64</LabCostIn>
<LabCostOut>0.0</LabCostOut>
<ServiceCost>0.0</ServiceCost>
<MatCostIn>260.36</MatCostIn>
<MatCostOut>0.0</MatCostOut>
<ToolCostIn>0.0</ToolCostIn>
<ToolCostOut>0.0</ToolCostOut>
</recordType>
</data>

最佳答案

这是另一个XSLT 1.0选项,它稍微复杂一点,但是如果您拥有更大的数据集,则应该*更加高效。

*我使用Saxon-HE 9.6进行了测试,并复制了数据,因此文件为10,353行,此样式表的运行时间约为150毫秒,而其他答案为1500毫秒(基于“ -t”开关的输出)。结果可能因实际数据和处理器不同而异,因此您可能需要测试。

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="recordTypes" match="recordType" use="."/>
<xsl:key name="byRecordType" match="*[not(self::recordType)]"
use="preceding-sibling::recordType[1]"/>

<xsl:template match="/*">
<results>
<xsl:for-each select="recordType[count(.|key('recordTypes',.)[1])=1]">
<xsl:apply-templates select="."/>
</xsl:for-each>
</results>
</xsl:template>

<xsl:template match="recordType">
<sum type="{.}">
<xsl:value-of select="sum(key('byRecordType',.))"/>
</sum>
</xsl:template>

</xsl:stylesheet>


输出量

<results>
<sum type="EXP">981.77</sum>
<sum type="ADD">3892.5</sum>
</results

关于xml - 是否可以使用XSLT对这些数据求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37892715/

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