2013-07-18 214 views
0
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节点包含日期时间。为什么这个XQuery不起作用?

返回:

[1.0毫升] XDMP-ARGTYPE:(ERR:XPTY0004) FN:含有((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:string?

回答

2

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

移动包含到一个谓语,所以它被称为为每一个输入:

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