计算xpath中的案例,其中日期是过去六个月

时间:2017-10-31 14:02:58

标签: xml date xpath count compare

我有一个搜索,但很难找到我理解/可以使用的答案。基本上,我需要使用一个xpath,它在某些情况下将日期与今天进行比较。

我询问的xml块包含多个帐户记录,下面一个块的摘录示例及相关数据:

<acc>
  <default>
     <defdate>2017-07-01</defdate>
     <defsatdate>2017-09-01</defsatdate>
  </default>    
</acc>

我需要计算在今天的最后六个月内有多少帐户有一个defdate,但帐户尚未满足。这就是defdate存在的地方,并且在过去六个月内,并且defsatdate不存在。 (请注意,如果帐户没有输入默认值,则该部分根本不会出现)。

请注意,此xpath将在实时环境中运行,因此日期部分需要是动态的并且可以解决当前的问题,而不是我能够在xpath中修复它。

所以在上面的例子中,账户在过去六个月内违约,但也很满意。因此,它不会进入我的计数。

我已经看过翻译功能等,但我仍然是一个非常挣扎的新手!

1 个答案:

答案 0 :(得分:0)

count(//acc[not(.//defsatdate) and 
            translate(.//defdate, '-','') <= '20171031' and
            translate(.//defdate, '-','') >= '20170331'])

(为了便于阅读,添加了换行符)

必要的解释

//acc[not(.//defsatdate)      - find `acc` without `defsatdate`
translate(.//defdate, '-','') - remove dash from the string