首页 > 解决方案 > 用于 When 循环的 XSLT 日期比较

问题描述

我正在比较 xsl:stylesheet version="1.0" 中的日期,如果日期差异大于 30 天,则将 Pkg 变量更新为 0。但它似乎不起作用。

<xsl:variable name="Packagedate" select="//segment[@name='Date']/value"></xsl:variable> 
<xsl:variable name="date" select="substring($Packagedate, 5, 2)"/>-<xsl:value-of select="substring($Packagedate, 7)"/>-<xsl:value-of select="substring($Packagedate, 1, 4)"></xsl:variable>
<xsl:variable name="CurrentDate" select="format-dateTime(current-dateTime(),'[Y0001]-[M01]-[D01]')"></xsl:variable>

<xsl:when test="days-from-duration(xs:date($CurrentDate)- xs:date('$date)) > 30">
<div class="fieldvalue">
<xsl:variable name="Pkg"></xsl:variable>
<xsl:value-of select='0'/>
</div>
</xsl:when>

标签: xslt

解决方案


您正在使用诸如days-from-duration()xs:date()仅在 XSLT 2.0+ 中可用的功能,但是您正在 XSLT 1.0 处理器下运行样式表。您可能可以使用的选项包括:

  • 升级到不同的 XSLT 处理器

  • 使用 exslt.org 上的附加日期/时间库

  • 调用主机编程语言(例如 Java 或 C#)中的函数。


推荐阅读