是否可以像包含其他文档或XPath一样将XQuery结果包含在XML文档中。
例如:
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"))可以这样做吗?
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"))在这方面的任何帮助都将不胜感激。
发布于 2018-10-13 08:16:51
在XQuery中,XML文本可以包含内联表达式的结果。
这样的表达式可以包括对xdmp:invoke()的调用。
因此,与以下未经测试的示例类似的代码应该可以工作(如果您使用的是MarkLogic 8,请将外部变量map的MarkLogic 9语法替换为MarkLogic 8等效语法):
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
)顺便说一句,从同一个事务返回插入的文档比在单独的事务中读取文档更有效。如果插入失败,事务将不会返回文档,因此在单独的事务中读取并不能提供更好的保证。
希望这能有所帮助,
https://stackoverflow.com/questions/52777519
复制相似问题