Xquery Получает количество элементов с помощью position()

#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]