为什么我的以下 XSL 进入内部 IF 条件,尽管表达式被评估为 false?

Why is my following XSL enters inside IF condition although expression is evaluated as false?

即使 if 条件为假,XSL 是否有任何理由进入范围?这听起来像是一个荒谬的问题,但我无法理解为什么我的以下 xsl-

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

即使没有同时匹配 TaskReference 和 StartDate 的任务,它也会进入范围。当我调试时,计数为零并且测试表达式被评估为 false。知道我可能做错了什么吗?如果需要更多信息,请告诉我。

虽然没有看到更完整的代码示例我无法确认这一点,但我认为您当前表达式中的逻辑。它不是在寻找匹配 TaskReferenceStartDate 的单个 TaskItem,而是在寻找匹配 TaskReferenceTaskItem,其中还有另一个(可能不同)TaskItem 匹配 StartDate

我觉得你的表达应该简化成这样

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