#xslt #xslt-2.0 #xslt-3.0
Вопрос:
У меня есть сценарий, который я хотел бы считать одним днем, если даты совпадают.
lt;wd:Dategt;2021-08-18lt;/wd:Dategt; lt;wd:Dategt;2021-08-18lt;/wd:Dategt;
Как я могу добиться этого с помощью XSLT. Итак, я хочу считать это одним днем, если дата совпадает.
Комментарии:
1. Не уверен, о чем ты спрашиваешь. Возьмите разницу и добавьте 1?
Ответ №1:
Ты мог бы:
- используйте
xs:date()
для оценки этих значений какxs:date
- затем вычтите одну дату из другой, чтобы получить разницу в виде
xs:dateTimeDuration
- затем используйте
days-from-duration()
, чтобы вернуть это количество дней (которое будет равно нулю). - применитесь
abs()
таким образом , чтобы нам не нужно было беспокоиться о том, какая дата была слева или справа, а также о положительных или отрицательных значениях - а затем добавьте
1
к этому значение
Эта таблица стилей:
lt;xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"gt; lt;xsl:template match="/"gt; lt;xsl:textgt;Days: lt;/xsl:textgt; lt;xsl:value-of select="abs(days-from-duration(xs:date(/*/*:Date[1]) - xs:date(/*/*:Date[2]))) 1"/gt; lt;/xsl:templategt; lt;/xsl:stylesheetgt;
Применяется к этому XML-файлу:
lt;wd:example xmlns:wd="wd"gt; lt;wd:Dategt;2021-08-18lt;/wd:Dategt; lt;wd:Dategt;2021-08-18lt;/wd:Dategt; lt;/wd:examplegt;
Производит этот результат:
Days: 1