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