首页 > 解决方案 > 如何在单行输出中获取 MarkLogic 中 XQuery 的输出?

问题描述

将详细说明 - 当我执行以下命令时:

let $value := xdmp:forest-status(
                xdmp:forest-open-replica(
                  xdmp:database-forests(xdmp:database("Documents"))))
return $value

上面的查询返回了很多关于数据库“文档”林的信息,比如 - forest-id、host-id 等。

我只要求它应该只返回我的森林的“状态”。我怎么做?

标签: xquerymarklogic

解决方案


使用 XPath 选择要返回的内容。

let $value := xdmp:forest-status(
                xdmp:forest-open-replica(
                  xdmp:database-forests(xdmp:database("Documents"))))
return $value/*:state/text()

此外,无需 FLWOR,您可以将其设为单线:

xdmp:forest-status(
  xdmp:forest-open-replica(
    xdmp:database-forests(xdmp:database("Documents"))))/*:state/text()

或者您可能会发现使用箭头运算符使事情变得更容易阅读,而不是嵌套函数调用和大量括号包裹它们:

(xdmp:database("Documents")
  => xdmp:database-forests()
  => xdmp:forest-open-replica()
  => xdmp:forest-status()
)/*:state/text()

响应中的 XML 元素位于http://marklogic.com/xdmp/status/forest命名空间中。因此,您要么需要声明命名空间(即declare namespace f = "http://marklogic.com/xdmp/status/forest";)并在 XPath 中使用前缀(即f:state),要么像我一样使用通配符*:state


推荐阅读