【问题标题】:XSL - Does evaluating conditional expressions "shortcut"?XSL - 评估条件表达式是否“捷径”?
【发布时间】:2009-09-11 09:54:10
【问题描述】:

给定一个 XSL 'If' 语句:

<xsl:if test="a = 'some value' and b = 'another value'">

如果a 不等于'some value',是否仍检查b 的值? (好像第一个测试是falseand 的唯一结果是false。)这就是像 C# 这样的语言所做的——我想知道 XSL 中是否也是如此。它是否依赖于引擎/解析器?

【问题讨论】:

    标签: xslt conditional


    【解决方案1】:

    是的,它被称为惰性求值或短路,xsl 支持它。见:http://www.w3.org/TR/xpath#booleans

    and 表达式由 评估每个操作数并转换 它的值是一个布尔值,就像通过调用一样 到布尔函数。结果是 如果两个值都为真和假,则为真 除此以外。 右操作数不是 评估左操作数是否 计算结果为假。

    【讨论】:

      【解决方案2】:

      是的,这取决于实施。但由于 XSLT 没有副作用(与 C# 和其他语言相反,在表达式中链接某些状态甚至赋值的函数调用可以出现在表达式中),这无关紧要。

      【讨论】:

      • 是的,但是使用短路可以节省一点时间,不是吗?
      • 当然,但由于执行顺序无关紧要,因此可以进行更多优化(例如先执行估计“更便宜”的查询等)
      猜你喜欢
      • 2019-03-16
      • 2015-02-22
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多