<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>
两者都应该评估为真,但第二种如果不是。对于我的生活,我无法理解为什么!
在实际转换中,日期本身是从XML文档中提取的,但是通过VS2010调试我可以看到值如上所示。
必须是相当基本的东西,我做错了 - 任何帮助都会很棒!
答案 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'"/>
请注意额外的单引号。
如果变量绑定元素具有select属性,则为该值 属性必须是表达式和变量的值 是评估表达式的结果。