为什么我的后续XSL进入IF条件,尽管表达式被评估为false?

时间:2015-02-18 14:42:10

标签: xslt

即使if条件为false,XSL是否有任何理由进入范围?这听起来像是一个荒谬的问题,但我无法弄清楚为什么我的后续xsl会发生这种情况 -

<xsl:if test="count(../../TaskItems_Sheet/TaskItems[TaskReference=$taskRefMain and ../../TaskItems_Sheet/TaskItems/StartDate/text() = $varTaskStartDate] )>0">
   <ns0:TaskItem>
       <ns0:Add>

即使没有匹配TaskReference和&amp;的任务也是如此。 StartDate,它进入范围。计数为零,并且在调试时将测试表达式计算为false。关于我能做错什么的任何想法?如果需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

虽然我无法在没有看到更完整的代码示例的情况下确认这一点,但我认为您当前表达式中的逻辑。它并不是在寻找与TaskItemTaskReference匹配的单StartDate,而是在寻找另一个TaskItem匹配的TaskReference({1}}可能不同的TaskItem匹配StartDate

我认为你的表达应该简化为

<xsl:if 
     test="count(../../TaskItems_Sheet/TaskItems[TaskReference=$taskRefMain and StartDate/text() = $varTaskStartDate]) > 0">