无法围绕 XQuery 输出包装元素
Cannot wrap element around XQuery output
在长期中断后返回 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>
那有什么问题,我该如何将输出包装在参数元素中?
尝试让变量具有 <param>
元素的序列,并且 return <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>
在长期中断后返回 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>
那有什么问题,我该如何将输出包装在参数元素中?
尝试让变量具有 <param>
元素的序列,并且 return <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>