如何比较xsl中的日期年份?

时间:2015-09-21 14:52:48

标签: xslt xpath xslt-1.0

如何将给定日期的年份与int进行比较?

<if test="year(@varDate)>=1900">
true
</if>

输入文件中日期的格式为:

<date varDate="31/12/1999" />

2 个答案:

答案 0 :(得分:1)

如果您坚持使用XSLT 1.0,最常见的方法是提取年份部分,如下所示:

substring-before('1994-12-31', '-')

或者,如果你的格式是,让我们说dd/MM/yyyy,你可以做 1

substring-after('31/12/1999', '/')

在你的情况下,这将是这样的:

<xsl:if test="substring-after('31/12/1999', '/') > 1900">
    true
</xsl:if>

由于您没有提供输入数据,我假设您可以自己制定详细信息。您的原始问题已标记为,但此后已发生变化。如果这意味着您可以使用XSLT 2.0或更高版本,并且您具有实际类型xs:date值,则还可以使用fn:year-from-date

<xsl:if test="year-from-date(xs:date('1994-12-31')) > 1900">
    true
</xsl:if>

1 这还不够,因为有两个斜杠,使用substring-after(substring-after('31/12/1999', '/'), '/'),如Michael's post中所示(归功于他)。

答案 1 :(得分:1)

  

事实证明我的日期格式与上面的解决方案不同   (日/月/年)。

如果那个真的你的日期格式 - 即天数和月份总是填充到两位数 - 你可以使用:

<if test="substring(@varDate, 7) >= 1900">

作为你的考试。

如果没有,您需要:

<if test="substring-after(substring-after(@varDate, '/'), '/') >= 1900">