Построение последовательности узлов - PullRequest
1 голос
/ 10 мая 2011

Есть ли более простой способ сделать это

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

в xquery?

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

Вы можете использовать fn: map (), если ваш процессор XQuery поддерживает XQuery 3.0:

fn: map (function ($ e) {}, $ sequence)

2 голосов
/ 10 мая 2011

Я не очень понимаю ваш вопрос.Что вы имеете в виду под проще?

Как насчет:

<Elements>
  <Element name="a" />
  <Element name="b" />
  <Element name="c" />
</Elements>
0 голосов
/ 12 мая 2011

Мне также интересно, что вы подразумеваете под "проще".

У всех элементов в переменной $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"/>
...