无法将元素环绕XQuery输出

无法将元素环绕XQuery输出,xquery,exist-db,Xquery,Exist Db,在长时间中断后返回XQuery let $root := <a:b xmlns:a="ans" xmlns:c="cns"/> for $prefix in in-scope-prefixes($root)[not(. = ('xml', 'xsi'))] return namespace-uri-for-prefix($prefix,$root) ! <param name="{$prefix}" va

在长时间中断后返回XQuery

let $root := <a:b xmlns:a="ans" xmlns:c="cns"/>
     for $prefix in in-scope-prefixes($root)[not(. = ('xml', 'xsi'))]
      return 
          namespace-uri-for-prefix($prefix,$root) ! 
              <param name="{$prefix}" value="{.}"/>
给出预期的

<param name="a" value="ans"/>  
<param name="c" value="cns"/>
但是,如果我尝试像下面这样在输出周围包装一个元素,则不会返回任何内容

<parameters>{
let $root := <a:b xmlns:a="ans" xmlns:c="cns"/>
     for $prefix in in-scope-prefixes($root)[not(. = ('xml', 'xsi'))]
      return 
          namespace-uri-for-prefix($prefix,$root) ! 
              <param name="{$prefix}" value="{.}"/>
}</parameters>

那么,有什么问题吗?如何将输出包装到parameters元素中?

尝试让一个变量包含元素序列,并返回引用该变量的元素,而不是将FLWOR内联

你不应该那样做。我能够用您的原始代码在MarkLogic中生成所需的输出,但似乎有必要让eXist生成所需的输出

xquery version "3.0" encoding "UTF-8";
let $root := <a:b xmlns:a="ans" xmlns:c="cns"></a:b>
let $params :=
     for $prefix in in-scope-prefixes($root)[not(. = ('xml', 'xsi'))]
     return 
       namespace-uri-for-prefix($prefix,$root) ! 
              <param name="{$prefix}" value="{.}"/>
return 
  <parameters>{ $params }</parameters>

尝试让一个变量包含元素序列,并返回引用该变量的元素,而不是将FLWOR内联

你不应该那样做。我能够用您的原始代码在MarkLogic中生成所需的输出,但似乎有必要让eXist生成所需的输出

xquery version "3.0" encoding "UTF-8";
let $root := <a:b xmlns:a="ans" xmlns:c="cns"></a:b>
let $params :=
     for $prefix in in-scope-prefixes($root)[not(. = ('xml', 'xsi'))]
     return 
       namespace-uri-for-prefix($prefix,$root) ! 
              <param name="{$prefix}" value="{.}"/>
return 
  <parameters>{ $params }</parameters>

当粘贴到这里时,它返回meDoes不工作的预期结果,因此可能是存在数据库问题是的,我在MarkLogic中运行。奇怪的是,如果您让一个具有元素序列的变量存在,比如:let$root:=let$params:=for$prefix in-scope prefixes$root[not.='xml',xsi']返回前缀$prefix的命名空间uri,$root!return{$params}粘贴到这里时,返回meDoes不工作的预期结果,因此可能是存在数据库问题是的,我在MarkLogic中运行。奇怪的是,如果您让一个具有元素序列的变量存在,比如:let$root:=let$params:=for$prefix in-scope prefixes$root[not.='xml',xsi']返回前缀$prefix的命名空间uri,$root!返回{$params}在exist db中不起作用。这直接链接到他们的XQuery IDE,你可以粘贴它并查看。哦,明白了。我的评论中建议的代码是有效的。我将更新此答案。在exist db中不起作用。这直接链接到他们的XQuery IDE,你可以粘贴它并查看。哦,明白了。我的评论中建议的代码是有效的。我会更新这个答案。