2017-01-17 56 views
1

我有一個數組,我想與特定的XML節點在這個僞代碼示例獲取的,像字符串來填補它:的XQuery:填充陣列的FLWOR方式

let $array := array {} 

for $child in $collection 
where contains(data($child), "Hey") 
do $array := array:append($array, data($child)) 

如何將正確的代碼看起來像執行這樣的一個手術?

所以,如果我有這樣的XML

<root> 
    <child>Hey</child> 
    <child>Ho</child> 
    <child>Hey Ho</child> 
</root> 

我期待陣列是

array ["Hey", "Hey Ho"] 

回答

4

XQuery是一種功能性的語言。因此,變量一旦被聲明就不能被重新分配。

下面的代碼應該做的伎倆:

array { 
    for $child in $collection 
    where contains(data($child/node1), "Hey") 
    return $child/node2 
} 

請注意,值自帶XQuery數據類型是一個序列。根據你的用例,也許你根本不需要數組。

+1

或者更簡單,更接近提供的XML,'array {$ collection [contains(。,「Hey」)]}' –

+0

對。似乎原來的問題是在我回答了我的答案之後編輯的。 –