您好我正在尝试使用此代码读取模块:
(: Entry point - must be a read-only query. :)
xdmp:invoke(
'/path/mydocument.xqy',
(xs:QName('var1'), 'test',
xs:QName('var2'), "response"))
我是MarkLogic的新手,我使用groovy和api连接到它,但我也看到我可以用这个来调用模块而且确实我做了但它还给了我
your query returned an empty sequence
我想知道我是否可以查询xs:QName('var1'), 'test'
,使用通配符更改测试,或者如何从名为/path/mydocument.xqy
的文件中获取所有信息?
我试着用这个:
xdmp:document-get("/path/mydocument.xqy)
但是它说找不到文件。虽然,如果我使用invoke我可以查询它,但我不知道我必须通过什么值。我想知道是否有类似sql使用%%或其他东西给我所有的数据。
答案 0 :(得分:3)
回答第一个问题:"我正在尝试阅读模块"
xdmp:filesystem-file()
简化:
使用服务器和REST客户端的默认配置,用户放置的模块位于"模块"数据库和用户放置的文档位于"文档"数据库。这意味着,如果您执行GET(读取"文档")而没有其他参数,它将返回来自"文档"数据库。假设您使用的是客户端和服务器的默认配置,这将导致您看到的行为。例如。您的模块代码在模块数据库中,按名称对其执行GET将搜索文档数据库并正确找不到它。
你没有提及,我不知道,正在使用的groovy库,但REST API本身和我熟悉的通用ML REST客户端库的所有实现都有覆盖的选项默认数据库与另一个。如果groovy库支持,那么指定"模块"您的查询的数据库,它应该返回模块文档。注意:content-type
将application/text
而不是text/xml
。
您可以绕过库简化测试工作,只需使用浏览器并尝试使用此类网址http://yourserver.com:8000/v1/documents?uri=/your/module.xqy&database=Modules
参考:https://docs.marklogic.com/REST/GET/v1/documents
对路径和服务器进行适当的更改以供您使用。
如果您仍然感到困惑,那么您应该从基本的MarkLogic教程开始,逐一完成它们。通过这样做,你很可能会更快地成功,然后直接进入你还不了解的编码。
DETAIL:
注意:默认行为是在使用Modules数据库进行GET调用时执行文档。因此,执行http://yourserver:8000/your/module.xqy的GET将执行它不返回其来源。
您会注意到REST API有一个uri查询参数。这是在/ v1 / documents上执行REST API代码,后者将读取由uri和数据库参数指定的文档并将其返回。
答案 1 :(得分:0)
我想我可以使用:
xdmp:invoke(/pview/get-pview-browse-profiles.xqy,
cts:and-query((
cts:element-value-query(
xs:QName("letter"),"*", "wildcarded"),
cts:element-value-query(
xs:QName("collection"),"*", "wildcarded"))))
虽然它没有返回任何东西