2011-05-10 69 views
1

的序列是否有更简单的方法来做到这一点构建节点

<Elements> 
{ 
    for $i in ("a", "b", "c") 
    return <Element name="{$i}"/> 
} 
</Elements> 

XQuery中?

+0

I也不明白这个问题(见奥利弗下面的答案)。您提供给我们的查询非常简单,并且适用于任何序列。也许,你应该给我们更多关于你的实际使用案例的细节。 – Shcheklein 2011-05-10 22:26:50

+0

@Shcheklein我在想,也许这样的查询可以在不使用FLOWR的情况下编写。也许像user457056显示的某种单行程式。 – Max 2011-05-11 16:25:02

回答

2

您可以使用FN:地图()是你的XQuery处理器具有的XQuery 3.0支持:

FN:地图(函数($ E){<元素名称=” {$ e}“/ >},$序列号)

+0

这很有趣。但据我所见,XQuery 3.0只处于预览阶段。 – Max 2011-05-10 16:16:18

2

我真的不明白你的问题。你更容易做什么?

如何:

<Elements> 
    <Element name="a" /> 
    <Element name="b" /> 
    <Element name="c" /> 
</Elements> 
+0

越容易,我的意思就是代码越少。我只是用abc-sequence作为例子。序列可以包含更多的元素。 – Max 2011-05-10 15:46:54

0

我也想知道”更简单“是什么意思。

有一个变量$seq和使用的所有项目:

for $i in 1 to count($seq) 
return <Element name="{$seq[$i]}"/> 

这是一个整体的XQuery程序

let $seq := 1 to 15 
    return 
     for $i in 1 to count($seq) 
      return <Element name="a{$seq[$i]}"/> 

并产生正确的,希望引起

<Element name="a1"/> 
<Element name="a2"/> 
<Element name="a3"/> 
<Element name="a4"/> 
<Element name="a5"/> 
<Element name="a6"/> 
<Element name="a7"/> 
<Element name="a8"/> 
<Element name="a9"/> 
<Element name="a10"/> 
<Element name="a11"/> 
<Element name="a12"/> 
<Element name="a13"/> 
<Element name="a14"/> 
<Element name="a15"/>