#xslt #xslt-2.0
#xslt #xslt-2.0
Вопрос:
Ищу некоторую помощь / руководство по синтаксису и наилучший способ сделать это.
Этот код находит максимальное значение Effdt из трех дат — я готов продолжить с этой частью. Проблема: Некоторые значения Effdt могут быть датированы будущим, что я не хочу учитывать при поиске и возврате максимального значения Effdt. Как я могу сказать: найдите максимальное значение Effdt из трех дат, но исключите любую дату, которая больше сегодняшнего дня.
<xsl:value-of select="format-date(max((xs:date(ws:Info/ws:Effdt1), xs:date(ws:Info/ws:Effdt2), xs:date(ws:Info/ws:Effdt3) )), '[Y0001][M01][D01]') "/>
Например, предположим, что xslt возвращает эти три даты:
20190401
20190424
20190430
Я хочу найти максимальное значение Effdt, которое не истекло сегодня, поэтому ожидал бы результатов: 20190424
Спасибо!
Ответ №1:
Используйте current-date
функцию и предикат: max((ws:Info/ws:Effdt1, ws:Info/ws:Effdt2, ws:Info/ws:Effdt3)/xs:date(.)[. lt current-date()])
. Или, возможно, больше, чем было бы сегодня . le current-date()
.
Комментарии:
1. Отлично, это работает! Но как мне теперь снова добавить дату в формате? Оно должно быть в формате ггггммдд. Спасибо!
2. Перенесите то, что я опубликовал, в ваш
format-date
вызов.3. А, понял! Мне не хватало конечной круглой скобки. Я знал, что это было что-то вроде этого простого, но я настолько не уверен в синтаксисе и в том, как собрать все воедино, что всегда беспокоюсь, что я не на правильном пути. Большое вам спасибо за вашу помощь и терпение 🙂