Marklogic Json Xquery 无法查询

Posted

技术标签:

【中文标题】Marklogic Json Xquery 无法查询【英文标题】:Marklogic Json Xquery can't query 【发布时间】:2013-08-20 09:41:36 【问题描述】:

我将 twitter 的 JSON 搜索输出加载到 Marklogic 中,并使用基本转换器将其转换为 Marklogic 的 JSON XML 格式。

当我尝试使用以下 XQuery 查询 id 时

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
for $r in doc()/json
let $b:=$r/id
return (
$b)

它一直抱怨没有结果。

当我使用 doc() 时,xml 显示正常,但 doc()/json 不显示任何内容。

以下是 Marklogic 从 Twitter 的 JSON 输出生成的 XML 的 sn-p

<?xml version="1.0" encoding="UTF-8"?>
<json type="object" xmlns="http://marklogic.com/xdmp/json/basic">
  <contributors type="null"/>
  <truncated type="boolean">false</truncated>
  <text type="string">@angelicism I love this site: http://t.co/XIjckcu0Lk</text>
  <in__reply__to__status__id type="number">369589929183297536</in__reply__to__status__id>
  <id type="number">369595664277065728</id>
  <favorite__count type="number">0</favorite__count>
...

【问题讨论】:

【参考方案1】:

您尝试选择的元素位于您需要在 XPath 中指定的命名空间中;试试这个:

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace json = "http://marklogic.com/xdmp/json/basic";
for $r in doc()/json:json
let $b:=$r/json:id
return (
$b)

【讨论】:

【参考方案2】:

它可能是命名空间,也可能是二进制节点。有用的调试工具包括xdmp:describefn:namespace-uri

xdmp:describe(
  doc()[1])

namespace-uri(
  doc()[1]/*)

【讨论】:

以上是关于Marklogic Json Xquery 无法查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 XQuery 从查询控制台读取 MarkLogic 日志

通过 XCC 将 XQuery xml 元素作为外部变量传递给 Marklogic

在 MarkLogic 中使用 XSLT/XQUERY 进行转换?

我可以在 Marklogic Server 的 xquery 中声明一个全局变量吗?

使用Marklogic(XQuery)中的时间戳生成非重复随机数?

在不同于使用 XQuery 处理的数据库上进行查询