Поскольку вы не предоставили никакого кода, я могу только догадываться, что вы попали в ловушку "функционального программирования".XQuery - это функциональный язык без переменных, известных в императивных языках, лучше думать о них как о константах.
let $x := 1 to 10
let $sum := 0
for $i in $x
let $sum := $sum+$i (: here we cover $sum from line 2, do not change it :)
return $sum
Вывод этого кода - 1 2 3 4 5 6 7 8 9 10
, что может быть неожиданным.В строке 4 мы всегда добавляем $i
(от 1 до 10) и $sum
(0), но мы не обновляем $sum
, а покрываем его.Для следующего $i
, $sum
снова будет 0.
Если это проблема, подумайте об использовании некоторого шаблона, подобного следующему:
let $seq := 1 to 15
let $dividor := 4
for $i in 1 to ceiling(count($seq) div $dividor) cast as xs:integer
return <tr>{
for $td in subsequence($seq, ($i -1)*$dividor + 1, $dividor)
return <td>{$td}</td>
}</tr>
Возможно, вам придется подгонять егок вашему коду, но идея должна быть в порядке.
РЕДАКТИРОВАТЬ: Если ваш процессор запросов поддерживает его, вы также можете использовать скользящее окно .Начиная с версии 5.0.2, Marklogic по-прежнему этого не делает.