首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过包含在MarkLogic中包括XQuery结果

通过包含在MarkLogic中包括XQuery结果
EN

Stack Overflow用户
提问于 2018-10-12 18:26:07
回答 1查看 73关注 0票数 2

是否可以像包含其他文档或XPath一样将XQuery结果包含在XML文档中。

例如:

代码语言:javascript
复制
xquery version "1.0-ml";
declare namespace xi="http://www.w3.org/2001/XInclude";

xdmp:document-insert("/test1.xml", <document>
  <p>This is a sample document.</p>
  <xi:include href="test2.xml"/> 
</document>);

xquery version "1.0-ml";
import module namespace xinc="http://marklogic.com/xinclude" at "/MarkLogic/xinclude/xinclude.xqy"; 

xinc:node-expand(fn:doc("/test1.xml"))

可以这样做吗?

代码语言:javascript
复制
xquery version "1.0-ml";
declare namespace xi="http://www.w3.org/2001/XInclude";

xdmp:document-insert("/test1.xml", <document>
  <p>This is a sample document.</p>
  <xi:include href="test2.xqy?var1=Hello&var2=world/> 
</document>);

xquery version "1.0-ml";
import module namespace xinc="http://marklogic.com/xinclude" at "/MarkLogic/xinclude/xinclude.xqy"; 

xinc:node-expand(fn:doc("/test1.xml"))

在这方面的任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-10-13 08:16:51

在XQuery中,XML文本可以包含内联表达式的结果。

这样的表达式可以包括对xdmp:invoke()的调用。

因此,与以下未经测试的示例类似的代码应该可以工作(如果您使用的是MarkLogic 8,请将外部变量map的MarkLogic 9语法替换为MarkLogic 8等效语法):

代码语言:javascript
复制
let $doc :=
    <document>
        <p>This is a sample document.</p>
        {xdmp:invoke("test2.xqy",
            map:entry("var1","Hello")
            => map:with("var2", "world")
            )}
    </document>
return (
    xdmp:document-insert("/test1.xml", $doc),
    $doc
    )

顺便说一句,从同一个事务返回插入的文档比在单独的事务中读取文档更有效。如果插入失败,事务将不会返回文档,因此在单独的事务中读取并不能提供更好的保证。

希望这能有所帮助,

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52777519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档