为什么我的以下 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。知道我可能做错了什么吗?如果需要更多信息,请告诉我。
虽然没有看到更完整的代码示例我无法确认这一点,但我认为您当前表达式中的逻辑。它不是在寻找匹配 TaskReference
和 StartDate
的单个 TaskItem
,而是在寻找匹配 TaskReference
的 TaskItem
,其中还有另一个(可能不同)TaskItem
匹配 StartDate
我觉得你的表达应该简化成这样
<xsl:if
test="count(../../TaskItems_Sheet/TaskItems[TaskReference=$taskRefMain and StartDate/text() = $varTaskStartDate]) > 0">
即使 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。知道我可能做错了什么吗?如果需要更多信息,请告诉我。
虽然没有看到更完整的代码示例我无法确认这一点,但我认为您当前表达式中的逻辑。它不是在寻找匹配 TaskReference
和 StartDate
的单个 TaskItem
,而是在寻找匹配 TaskReference
的 TaskItem
,其中还有另一个(可能不同)TaskItem
匹配 StartDate
我觉得你的表达应该简化成这样
<xsl:if
test="count(../../TaskItems_Sheet/TaskItems[TaskReference=$taskRefMain and StartDate/text() = $varTaskStartDate]) > 0">