序列中的每個資料項目目可能彼此非常相似,或者它們可能是不同的類型。
我們從一些簡單的序列示例開始。看一下最常見的序列運算符。 XQuery使用單詞sequence
作為有序容器容器的通用名稱。
瞭解序列在XQuery中的工作方式對於理解語言的工作原理至關重要。 通用專案序列的使用是函數式編程的核心,與其他編程語言(如Java或JavaScript)形成鮮明對比,後者提供了多種方法和函數來處理鍵值對,字典,數組和XML數據。 XQuery的精彩之處在於,您只需要學習一組概念和一小部分函數來學習如何快速運算元據。
創建字元和字串序列
可以使用括弧來包含序列,使用逗號分隔資料項目目和引號以包含字串值:
let $sequence := ('a', 'b', 'c', 'd', 'e', 'f')
請注意,可以使用單引號或雙引號,但對於大多數字串,使用單引號。
let $sequence := ("apple", 'banana', "carrot", 'dog', "egg", 'fig')
還可以混合數據類型。 例如,以下序列在同一序列中具有三個字串和三個整數。
let $sequence := ('a', 'b', 'c', 1, 2, 3)
然後,可以將序列傳遞給任何適用於序列的XQuery函數。 例如,count()
函數將序列作為輸入,並返回序列中的資料項目數量。
let $count := count($sequence)
查看序列中的資料項目
let $sequence := ('a', 'b', 'c', 'd', 'e', 'f')
let $count := count($sequence)
return
<results>
<count>{$count}</count>
<items>
{for $item in $sequence
return
<item>{$item}</item>
}
</items>
</results>
執行結果如下所示 -
<results>
<count>6</count>
<items>
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
<item>e</item>
<item>f</item>
</items>
</results>
查看序列中的選定資料項目目
可以使用謂詞運算式選擇序列中的資料項目目。可以按位置選擇專案(從1
開始):
let $sequence := ('a', 'b', 'c', 'd', 'e', 'f')
return
<items>{
for $item in $sequence[1, 3, 4]
return
<item>{$item}</item>
}
</items>
結果如下所示 -
<items>
<item>a</item>
<item>c</item>
<item>d</item>
</items>
或按值:
let $sequence := ('a', 'b', 'c', 'd', 'e', 'f')
return
<items>{
for $item in $sequence[. = ('a','e')]
return
<item>{$item}</item>
}
</items>
結果如下所示 -
<items>
<item>a</item>
<item>e</item>
</items>
將XML元素添加到序列中
還可以按順序存儲XML元素。
let $sequence := ('apple', <banana/>, <fruit type="carrot"/>, <animal type='dog'/>, <vehicle>car</vehicle>)
雖然可以使用括弧來創建一系列XML項,但最佳實踐是使用XML標記來開始和結束序列並將所有項存儲為XML元素。建議使用專案作為元素名稱來保存資料項目目的通用序列。
下麵是一個例子:
let $items :=
<items>
<banana/>
<fruit type="carrot"/>
<animal type='dog'/>
<vehicle>car</vehicle>
</items>
另一個約定是將所有單個專案放在它們自己的item
元素標記中,並在專案列表變長時將每個專案放在單獨的行上。
let $items :=
<items>
<item>banana</item>
<item>
<fruit type="carrot"/>
</item>
<item>
<animal type='dog'/>
</item>
<item>
<vehicle>car</vehicle>
</item>
</items>
然後可以使用以下FLWOR運算式來顯示以下每個資料項目目:
let $sequence :=
<items>
<item>banana</item>
<item>
<fruit type="carrot"/>
</item>
<item>
<animal type='dog'/>
</item>
<item>
<vehicle>car</vehicle>
</item>
</items>
return
<results>{
for $item in $sequence/item
return
<item>{$item}</item>
}</results>
它將返回以下XML內容 -
<results>
<item>
<item>banana</item>
</item>
<item>
<item>
<fruit type="carrot"/>
</item>
</item>
<item>
<item>
<animal type="dog"/>
</item>
</item>
<item>
<item>
<vehicle>car</vehicle>
</item>
</item>
</results>
上一篇:
XQuery FLWOR示例
下一篇:
XQuery解析CSV