查找具有适当“ dateTime”格式的元素的文档

时间:2018-08-16 08:43:23

标签: xquery marklogic

我正在marklogic-9中尝试以下查询:

cts:element-value-match(xs:QName("cd:modificationDate"), "[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].000Z", ("type=dateTime","timezone=TZ"))

要实现这一目标,但这会给我以下错误:

[1.0-ml] XDMP-ARG: cts:element-value-match(xs:QName("cd:modificationDate"), "[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].000Z", ("type=dateTime", "timezone=TZ")) -- arg2 is invalid

我要做的是找出所有符合dateTime特定模式的文档。我们在此元素上有一个日期范围索引-modificationDate

我们如何最好地使用marklogic和xquery api做到这一点。

1 个答案:

答案 0 :(得分:3)

cts:element-value-match实际上仅对字符串范围索引有用,即使在那里它也仅需要简单的通配符(*?),而不是常规的正则表达式或日期格式。

如果范围索引是dateTime范围索引,则每个值都必须符合正确的xs:dateTime格式,因此此查询不会告诉您任何内容。

这将为您提供该元素中具有有效dateTime的所有URI的列表:

cts:uris("", (),
    cts:element-range-query(xs:QName("modificationDate"), ">", xs:dateTime("0001-01-01T00:00:00"))
)