четверг, 26 июня 2008 г.

Сравнение дат в XPath

Недавно я столкнулся с задачей фильтрации xml-форм с помощью xpath-запросов. Задача вобщем-то простая, если в форме лежат только текстовые строки.

Если в форме есть даты, приходится изголяться - Xpath в System.Xml.XPath.XPathNavigator не умеет сравнивать даты в формате "YYYY-MM-DDT00:00:00.0000000+05:00". Решение этой проблемы найти в поисковике непросто, поэтому пусть оно лежит здесь :)

Фильтрация в моём случае выглядит примерно так: //FormDate[translate(substring-before(., 'T'), '-', '')>'20071231'] возвращает все элементы FormDate с датой в 2008 году и позже.

'20071231' представляет собой результат действия translate(substring-before('2007-12-31T00:00:00.0000000+05:00', 'T'), '-', '')

Комментариев нет: