构造一系列节点

时间:2011-05-10 10:12:50

标签: xquery

有更简单的方法吗

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

在xquery中?

3 个答案:

答案 0 :(得分:2)

我真的不明白你的问题。你的意思更容易了吗?

怎么样:

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

答案 1 :(得分:2)

你可以使用fn:map()是你的XQuery处理器有XQuery 3.0支持:

fn:map(function($ e){&lt; Element name =“{$ e}”/&gt;},$ sequence)

答案 2 :(得分: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"/>