Как я могу получить документ на основе последней даты

Я совершенно новичок в Marklogic и xquery в целом. У нас есть набор документов, у которых в качестве узла указана дата крайнего срока. Может ли кто-нибудь помочь мне с xquery, чтобы получить последний документ на основе даты крайнего срока? Каждый документ выглядит

<document>
<Id>blah<Id>
<DeadlineDate>2012-04-04T21:00:00</DeadLineDate>

person uttamkini    schedule 10.04.2012    source источник
comment
Предоставьте допустимый XML в качестве входных данных, пожалуйста. Вы действительно используете коллекции XQuery? Вам нужен документ с последним сроком (ожидался бы первый)?   -  person Jens Erat    schedule 10.04.2012


Ответы (1)


Вам понадобится индекс диапазона для DeadlineDate типа dateTime.

let $latest := cts:element-values(
  xs:QName('DeadlineDate'), ('document', 'descending', 'limit=1'))
return /document[DeadLineDate eq $latest]

Или вы также можете использовать эту форму:

(for $n in /document[DeadLineDate]
 order by $n/DeadLineDate descending
 return $n)[1]

Я думаю, что первый обычно будет быстрее, но его, возможно, стоит протестировать.

person mblakele    schedule 10.04.2012