#xquery
#xquery
Вопрос:
Мне нужно вернуть 5 самых больших элементов, которые возвращает цикл. Я пытаюсь использовать функцию position(), но не могу…
<IsolatedData>
<LleidaData>
{
for $dl in doc ("dadesLleida.xml")//row
where $dl/residence = 'No'
order by xs:integer($dl/confirmed_cases) descending
return
<ConfirmedCases>{$dl/confirmed_cases/text(), ' - ', $dl/start_date/text()}</ConfirmedCases>
}
</LleidaData>
</IsolatedData>```
Комментарии:
1. Какой это процессор или версия XQuery? В более поздних версиях есть
count
предложение, которое вы можете ввести, чтобы настроить переменную с помощью «position» и ограничить ее дополнительнымwhere
, например. Но выполнение(for .. where .. order .. return ..)[position() le 5]
также должно выполняться.
Ответ №1:
Используйте либо
for $dl in doc ("dadesLleida.xml")//row
where $dl/residence = 'No'
order by xs:integer($dl/confirmed_cases) descending
count $p
where $p le 5
return
<ConfirmedCases>{$dl/confirmed_cases/text(), ' - ', $dl/start_date/text()}</ConfirmedCases>
или
(for $dl in doc ("dadesLleida.xml")//row
where $dl/residence = 'No'
order by xs:integer($dl/confirmed_cases) descending
return
<ConfirmedCases>{$dl/confirmed_cases/text(), ' - ', $dl/start_date/text()}</ConfirmedCases>)[position() le 5]