【问题标题】:Why does this XQuery not work?为什么这个 XQuery 不起作用?
【发布时间】:2013-07-18 13:59:21
【问题描述】:
 let $ds := cts:search(
      fn:doc(),
      cts:and-query(
       (            
         cts:collection-query(('InProgress_Audit'))
       )
      )) where not(contains( $ds//TitleDate/text(), "Z"))

      return count($ds)

TitleDate 节点包含日期时间。

返回:

[1.0-ml] XDMP-ARGTYPE:(错误:XPTY0004) fn:contains((fn:doc("/icis.dnr.audit.issue/E-STY/E-STY_201212072330_20121207164208.xml")/ProductIssue/TitleDate/text(), fn:doc("/icis.dnr.audit.issue/E-TIO2-EU/E-TIO2-EU_201303090245_20130307145047.xml")/ProductIssue/TitleDate/text(), fn:doc("/icis.dnr.audit.issue/F-ETHY/F-ETHY_201302221700_20130222055846.xml")/ProductIssue/TitleDate/text(), ...), "Z") -- arg1 不是类型xs:字符串?

【问题讨论】:

    标签: datetime xquery


    【解决方案1】:

    $ds//TitleDate/text() 返回多个项目,而contains(...) 只允许单个字符串作为第一个参数。

    将包含移动到谓词中,因此每个输入都会调用它:

    not($ds//TitleDate/text()[contains(., "Z")])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 2013-03-10
      • 1970-01-01
      • 2014-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多