XSLT日期比较

时间:2011-10-05 15:50:10

标签: 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 &lt; $date1">
  ..do something
</xsl:if>

<xsl:if test="$date3 = $date1 or $date3 &gt; $date1">
 .. do something
</xsl:if>

两者都应该评估为真,但第二种如果不是。对于我的生活,我无法理解为什么!

在实际转换中,日期本身是从XML文档中提取的,但是通过VS2010调试我可以看到值如上所示。

必须是相当基本的东西,我做错了 - 任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

我在Oxygen / XML中尝试了这个... select="2011-10-05被解释为算术表达式,给出值1996(2011减去10减5),"2011-10-06"被表示为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'"/>

请注意额外的单引号。

来自XSLT 1.0 Specification

  

如果变量绑定元素具有select属性,则为该值   属性必须是表达式和​​变量的值   是评估表达式的结果。