2017-01-17 14 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

が正しい。私が答えを出した後、元の質問が編集されたようです。 –

関連する問題