我进行了一次搜索,但很难找到一个我理解/可以使用的答案。基本上,我需要使用xpath,在某些情况下将日期与今天进行比较。
我正在询问的xml块包含几个帐户记录,下面是一个包含相关数据的块的摘录示例:
<acc>
<default>
<defdate>2017-07-01</defdate>
<defsatdate>2017-09-01</defsatdate>
</default>
</acc>
我需要计算在今天的最后六个月内有多少账户有defdate,但在哪些账户没有得到满足。这就是defdate存在的地方,在过去六个月内,而defsatdate不存在。(请注意,如果帐户未输入默认值,则该部分将完全不存在)。
请注意,这个xpath将在实时环境中运行,因此日期部分需要是动态的,并计算出今天的情况,而不是我能够在xpath中解决这个问题。
因此,在上面的例子中,账户在过去六个月内违约,但也得到了满足。因此,它不会进入我的计数。
我看过翻译功能等,但我还是个新手,所以很挣扎!
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