XQuery: заполнить массив способом FLWOR
У меня есть массив, и я хочу заполнить его строками, взятыми из определенных узлов XML, как в этом примере псевдокода:
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"]
1 ответ
Решение
XQuery - это функциональный язык. Таким образом, переменные не могут быть переназначены после того, как они были объявлены.
Следующий код должен сделать трюк:
array {
for $child in $collection
where contains(data($child/node1), "Hey")
return $child/node2
}
Обратите внимание, что собственный тип данных XQuery для значений является последовательностью. В зависимости от вашего варианта использования, возможно, вам вообще не нужны массивы.