2017-01-17 11 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 [содержит (.," Hey ")]}' –

+0

Право. Кажется, что исходный вопрос был отредактирован после того, как я поместил свой ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^