如何将值与之前的记录进行比较,然后修改日期字段

问题描述 投票:0回答:1
CT|123456789|ABCDE|10202023|Deduction|30.00|
CT|123456789|ABCDE|10202023|Deduction|30.00| <--- change the date to 10062023

我想将这条记录与前一条记录进行比较,如果它们相同,那么我需要在日期字段中减去 14 天。您能告诉我如何在 XSLT 中做到这一点吗?谢谢。

预期结果:

CT|123456789|ABCDE|10202023|Deduction|30.00|
CT|123456789|ABCDE|10062023|Deduction|30.00| 
xml xslt-2.0
1个回答
0
投票

您大概能够解析非 XML 内容,否则您会问这个问题。因此,如果您将其解析为带有 ISO 日期的 XML 节点树,您将得到如下所示的内容:

<record a="CT" b="123456789" d="ABCDE"
     e="2023-10-20" f="Deduction" g="30.00"/>

然后您的要求会转化为模板规则:

<xsl:template match="record[@e=preceding-sibling::record[1]/@e]">
  <xsl:copy>
    <xsl:copy-of select="@* except @e"/>
    <xsl:attribute name="e" select="xs:date(@e)-xs:dayTimeDuration('PT1D')"/>
  </xsl:copy>
</xsl:template>
© www.soinside.com 2019 - 2024. All rights reserved.