无法在XQuery输出中包装元素

问题描述 投票:1回答:1

长时间中断后返回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元素中?

xquery exist-db
1个回答
1
投票

[尝试让变量具有<param>元素的序列,然后返回引用该变量的<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>
© www.soinside.com 2019 - 2024. All rights reserved.