Marklogic如何循环每个节点

标签 marklogic

我尝试循环每个$node来获取元素,然后在local:function中返回所有元素的string-join()。但它不起作用。

XDMP-AS: (err:XPTY0004) local:test-case($value) -- Invalid coercion: "EF127557 Y" as node().

我无法弄清楚这个错误代码的含义。

xquery version "1.0-ml";
declare namespace techco="http://techco.com/db/record";
declare namespace meta="http://techco.com/db/record/meta";

declare function local:test-case($nodes as node()*) as node()* {
let $pl := for $node in $nodes
            let $ANumber        := $node/db:Record/meta:Metadata/meta:ANumber
            let $ActiveFlag             := $node/db:Record/meta:Metadata/meta:ActiveFlag
            let $value:=   fn:string-join(($ANumber,$ActiveFlag)," ")                                         
              return $value

return $pl
};

let $query:=cts:and-query((
                    ....
        ))

let $value := cts:search(
                   fn:doc(),
                   $query
)
  return local:test-case($value)

最佳答案

所以我无法测试这个,因为没有示例数据,但现在应该可以工作。问题是您的返回类型设置为 node() 并且需要为 xs:string*无效强制转换:错误意味着其获取的数据类型不是它所期望的。

xquery version "1.0-ml";
declare namespace techco="http://techco.com/db/record";
declare namespace meta="http://techco.com/db/record/meta";

declare function local:test-case($nodes as node()*) as xs:string* {
let $pl := for $node in $nodes
            let $ANumber        := $node/db:Record/meta:Metadata/meta:ANumber
            let $ActiveFlag             := $node/db:Record/meta:Metadata/meta:ActiveFlag
            let $value:=   fn:string-join(($ANumber,$ActiveFlag)," ")                                         
              return $value

return $pl
};

let $query:=cts:and-query((
                    ....
        ))

let $value := cts:search(
                   fn:doc(),
                   $query
)
  return local:test-case($value)

关于Marklogic如何循环每个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793961/

相关文章:

java - 如何关闭 MarkLogic Java API 日志记录?

javascript - Marklogic 9 中奇怪的 xdmp.eval() toObject() 问题

MarkLogic 内容泵 mlcp 文档 URI 问题

Marklogic 中的 JavaScript 多语句事务

xquery - MarkLogic 8 - 使用文档管理和结帐的 XQuery

marklogic - 如何在 Optic API 中使用 fn :contains(), fn:starts-with() 和 fn:ends-with

javascript - 无法绕过 angularjs 种子应用程序中的 CORS

marklogic java 客户端 api 扩展 xincludes

javascript - MarkLogic 应用程序服务器自定义登录页面 sessionID cookie 与 GET 请求

xquery - Marklogic - 如何获取具有角色的用户列表