XSLT日期比较
问题描述:
<xsl:variable name="date1" select="2011-10-05"/>
<xsl:variable name="date2" select="2011-10-05"/>
<xsl:variable name="date3" select="2011-10-06"/>
<xsl:if test="$date2 = $date1 or $date2 < $date1">
..do something
</xsl:if>
<xsl:if test="$date3 = $date1 or $date3 > $date1">
.. do something
</xsl:if>
两者都应评估为真,但第二个如果不是。对于我的生活,我无法理解为什么!XSLT日期比较
在实际的转换日期本身是从XML文档绘制,但通过VS2010调试我可以看到值如上。
一定是相当重要的事我做错了 - 任何帮助将是辉煌!
答
我想这在氧气/ XML ... select="2011-10-05
被解释为一个算术表达式,给1996年的值(2011年减10减5)和"2011-10-06"
被intrepreted在1995年
你需要的是
<xsl:variable name="date1" select="'2011-10-05'"/>
<xsl:variable name="date2" select="'2011-10-05'"/>
<xsl:variable name="date3" select="'2011-10-06'"/>
请注意额外的单引号。
如果变量结合元件具有选择属性,则该值的属性的 必须是表达和可变 的值是从评估结果的对象表达方式。
+0
更好的是,声明变量的类型为date。如果你养成这样做的习惯,令人惊讶的是,像这样的许多愚蠢的错误导致了明智的错误消息,而不是混淆错误的输出。
+0
当然同意,但由于OP没有指定,他提到了Visual Studio,我假定XSLT 1.0。 –
XSLT 1.0或2.0? –