使用XPATH在CQ中的日期范围比较

时间:2016-02-11 20:49:08

标签: xpath cq5 jcr

我使用以下查询根据CQ中的上次修改日期获取节点。

['0503.mat', '0504.mat', '0505.mat', '0506.mat', '0507.mat', '0508.mat',
 '0509.mat', '0510.mat', '0511.mat', '0512.mat', '0601.mat', '0602.mat',
 '0603.mat', '0604.mat', '0605.mat', '0606.mat', '0607.mat', '0608.mat',
 '0609.mat', '0610.mat', '0611.mat', '0612.mat', '0701.mat', '0702.mat']

我们已经使用了

/jcr:root/content/scaffoldes/properties//*[@jcr:primaryType = 'nt:unstructured' and (@sling:resourceType = 'acme/components/content/scaffoldItem' or @sling:resourceType = 'acme-core/components/data/property') and @jcr:content/cq:lastModified >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastModified < xs:dateTime('2014-12-31T00:00:00.000-08:00') and not(@isHidden)] order by @jcr:score

测试此查询。但是,即使给出了一个巨大的日期范围(2000年至2016年),这个查询也没有返回任何内容。

但是如果我们删除日期范围部分,则此查询将返回节点。

任何纠正这一点的指针都会有所帮助。

谢谢和问候, 圣

备注

使用以下代码创建日期字符串:

  http://localhost:4502/crx/explorer/ui/search.jsp

1 个答案:

答案 0 :(得分:0)

对不起造成的任何混淆。我发现我尝试查询的节点没有cq:lastModified属性。因此修改了查询以在条件中包含cq:lastReplicated。

 ... and ((@jcr:content/cq:lastModified >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastModified < xs:dateTime('2016-02-11T15:52:57.090-08:00')) or (@jcr:content/cq:lastReplicated >= xs:dateTime('2000-01-01T00:00:00.000-08:00') and @jcr:content/cq:lastReplicated < xs:dateTime('2016-02-11T15:52:57.090-08:00'))) and ...