在XSLT 2.0中使用多个参数进行过滤

时间:2018-12-14 22:24:49

标签: xslt xslt-2.0

我正在按月计算付款额,但在获取正确的过滤器时遇到问题。这是我正在寻找的书面逻辑:

总和(当plannedPaymentDate满足条件X和Y并且不存在executionDate或executionDate满足条件X和Y时支付的款项)

我认为关于过滤器内括号的操作顺序存在问题。这是我目前拥有的过滤器:

<xsl:value-of select="sum(payments[(((plannedPaymentDate/@year = $year and plannedPaymentDate/@month = $month) and not(executionDate/@date)) or (executionDate/@year = $year and executionDate/@month = $month))]/amount/co_costprice/@anglosaxon_amount)"/>

我知道它很大且很笨拙的事实,但是我要遍历的每个项目都有可能具有多个日期的多次付款,因此我试图对所有符合此条件的付款进行汇总。

问题是我有2019年9月的付款,当时有计划的日期,但执行日期为2019年12月,所以9月应该是空白,但不是,它显示了付款金额计划的日期。

1 个答案:

答案 0 :(得分:1)

你写了

<xsl:value-of select="sum(payments[
   ( ( ( plannedPaymentDate/@year = $year 
         and plannedPaymentDate/@month = $month
       ) 
       and not(executionDate/@date)
     ) 
     or ( executionDate/@year = $year 
          and executionDate/@month = $month
        )
  )
  ]/amount/co_costprice/@anglosaxon_amount)"/>

您尚未显示XML来源,但您说存在“多个付款日期”,这向我建议,在前两个条件中,您并没有指定必须通过相同的{ {1}}。所以我怀疑应该是

plannedPaymentDate

(我喜欢以盎格鲁撒克逊货币计算成本价格的想法...)