2011-05-10 105 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"/>