你能告诉我如何在这里使用XQuery吗?

时间:2017-11-17 11:29:15

标签: xquery marklogic

let $db := xdmp:databases()[1]
let $db-name := xdmp:database-name($db)
let $db-forests := xdmp:database-forests($db, fn:false())
let $forests-name := xdmp:forest-name($db-forests) 
let $forests-name := for $f in xdmp:forest-name($db-forests) 
                        order by $f ascending
                      return $f
let $forest-status := xdmp:forest-status($db-forests)
let $map := map:map()
let $_ := for $f in $forests-name
            let $host-id := $forest-status/f:host-id/text() where ($forest-status/f:forest-name[. = $f] and ($forest-status/f:availablility/text() eq "online"))
            let $_ := if(map:contains(xdmp:host-name($host-id))) then() else()
          return $host-id
return $forest-status

我收到错误,因为我没有正确使用Xquery。请指导我。

1 个答案:

答案 0 :(得分:3)

  1. FLWOR语句不仅仅是名称 - 它是需要完成事情的顺序。你在FLWOR声明中有let-where-let。重新安排。它对第二个let语句感到不安,因为它出现在where语句之后..
  2. 第二 - 从视觉检查来看,您似乎没有前缀'f'的命名空间绑定。
  3. 第三 - 视觉检查表明您的地图声明将失败,因为:
    • 1地图似乎永远不会有值
    • 2 map:包含函数没有足够的参数..