我正在使用以下xml结构:
<?xml version="1.0" encoding="UTF-8"?>
<Report_Data>
<Report_Entry>
<ID>10513</ID>
<Code>XXX</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>100</Amount>
</Report_Entry>
<Report_Entry>
<ID>10513</ID>
<Code>XXX</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>-25</Amount>
</Report_Entry>
<Report_Entry>
<ID>12076</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>100</Amount>
</Report_Entry>
<Report_Entry>
<ID>12166</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>5</Amount>
</Report_Entry>
<Report_Entry>
<ID>12166</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>35</Amount>
</Report_Entry>
</Report_Data>
只有当代码为“XXX”时,我才需要按ID和代码分组,并求和金额。最后,我的最终输出应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Report_Data>
<Report_Entry>
<ID>10513</ID>
<Code>XXX</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>75</Amount>
</Report_Entry>
<Report_Entry>
<ID>12076</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>100</Amount>
</Report_Entry>
<Report_Entry>
<ID>12166</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>5</Amount>
</Report_Entry>
<Report_Entry>
<ID>12166</ID>
<Code>HHH</Code>
<Payment_Date>2016-05-05-07:00</Payment_Date>
<Amount>35</Amount>
</Report_Entry>
我知道如何通过多个元素进行分组,但我不知道如何通过元素值对分组进行条件化。我不太深入研究xsl,所以我的知识有点缺乏。我尝试过使用以下xsl(无论如何都是最新版本):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="Report_Data">
<Report_Data>
<xsl:for-each-group select="Report_Entry" group-by="concat(ID,' ',Code)">
<xsl:copy>
<xsl:copy-of select="ID"/>
<xsl:copy-of select="Code"/>
<xsl:copy-of select="Payment_Date"/>
<Amount><xsl:value-of select="sum(current-group()/Amount[. > 0] - sum(current-group()/Amount[. < 0]))"/></Amount>
</xsl:copy>
</xsl:for-each-group>
</Report_Data>
</xsl:template>
</xsl:stylesheet>
我遇到的另一个问题是,我没有完全正确的求和逻辑,但这可能是一个不同的帖子。
任何形式的帮助或指导将不胜感激。
只有当代码为“XXX”时,我才需要按ID和代码分组
我想你想说的是,你想根据它们的ID将代码为“XXX”的条目分组,并保持所有其他条目不变。可以这样做:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/Report_Data">
<Report_Data>
<xsl:for-each-group select="Report_Entry[Code='XXX']" group-by="ID">
<Report_Entry>
<xsl:copy-of select="ID | Code | Payment_Date"/>
<Amount>
<xsl:value-of select="sum(current-group()/Amount)"/>
</Amount>
</Report_Entry>
</xsl:for-each-group>
<xsl:copy-of select="Report_Entry[not(Code='XXX')]"/>
</Report_Data>
</xsl:template>
</xsl:stylesheet>
请注意,Payment_Date
值取自组中的第一个条目。至少在理论上,同一组中的其他条目可以具有其他Payment_Date
值。
问题内容: 请考虑以下示例 [+]输出:set([‘1’,‘3’,‘2’]) [+]输出:set([[‘1’,‘3’,‘2’,’set([3,4])’]) [+] set([‘1’,’[3,4]’,‘3’,‘2’,’set([3,4])’]) 根据https://redis-py.readthedocs.org/zh-CN/latest/中的官方文档, sadd(name,* values)添加值
我有一个按钮和一个文本区: null null 现在我想让它们像这样向右或向左对齐: 运行代码段按钮和文本区如何向左对齐?
问题内容: 据我了解,我可以将refs用于单个元素,如下所示: 如何为一系列元素实现此功能?显然不是这样:(即使我没有尝试,我也知道:) 我已经看到了这个,因此这个。但是,对于这种简单情况,我仍然感到困惑。 问题答案: ref最初只是对象。在组件渲染之间保留对此对象的引用。value主要用于组件引用,但可以容纳任何内容。 在某个时候应该有一组引用。如果渲染之间数组长度可能有所不同,则数组应相应缩放
问题内容: 我有这样的课: 我想为每个MultiDataPoint生成 当然,在多个MultiDataPoints中,“键”可以相同。 因此,给定a ,如何使用Java 8流转换为? 这是我目前在没有流的情况下进行转换的方式: 问题答案: 这是一个有趣的问题,因为它表明有很多不同的方法可以达到相同的结果。下面我展示了三种不同的实现。 集合框架中的默认方法: Java 8向集合类中添加了一些与 St
我在使用JAXB解析XML时遇到了这个问题。下面是所讨论的XML的简化布局: 我遇到的问题是,这些引用是在linkage标记下发送的,而linkage标记不是唯一的,而且也没有类似于根的“linkage”,这样我就可以轻松地用Java将其包装到列表中,因为generalInformation标记中有其他标记。以下是我到目前为止的设置方式: 所以我的问题是,如何配置GeneralInformatio
我正在为SeleniumWebDriver测试框架使用PageObject模式 在我的pageObject类中,我有多个使用驱动程序的方法。findElement查找同一页面上存在的相同webelement 例如: 我的问题是: 1.如何避免在相同的WebElement变量上多次使用driver.findElement。我想要一种方法,一旦我找到网络,我将在任何其他方法中使用变量,而不使用driv