Учитывая XML:XPath 3.0 сравнить даты разностное с длительностью буквального
<?xml version="1.0" encoding="UTF-8"?>
<root>
<c cid="0">
<d did="c0d0" d1="2015-02-11" d2="2015-06-15" />
<d did="c0d1" d1="2015-04-01" d2="2015-04-14" />
</c>
<c cid="1">
<d did="c1d0" d1="2014-11-15" d2="2015-07-21" />
<d did="c1d1" d1="2016-02-10" d2="2016-02-25" />
</c>
</root>
Использование XPath 3.0 я найти все c
узлы, которая имеет по меньшей мере один d
дочерний узел, который d2-d1
значений атрибутов разница меньше или равна 30 дней. d1
и d2
значения - это даты в формате YYYY-MM-DD
. Я попытался XPath:
/root/c[d/xs:date(@d2)-d/xs:date(@d1)<=30]
, но у меня есть и ошибка:
Cannot compare xs:dayTimeDuration to xs:integer
Я использую XPath Builder
в режиме XPath 3.0
в Oxygen XML Editor v18
. Я полагаю, что эта ошибка вызвана неправильной установкой времени. Советуйте, как указать продолжительность времени как литерал в XPath 3.0. Спасибо!
И в интересах других нет ничего, что требовало XPath 3.0 - все, что вам нужно, это 2.0. –