给出一个XSL'If'语句:
<xsl:if test="a = 'some value' and b = 'another value'">
如果a
不等于'some value'
,b
的值是否仍会被检查? (好像第一个测试是false
,and
的唯一结果是false
。)这就像C#这样的语言 - 我想知道XSL是否也是如此。它取决于引擎/解析器吗?
答案 0 :(得分:4)
是的,它被称为延迟评估或短路,xsl支持它。请参阅:http://www.w3.org/TR/xpath#booleans
An和表达式由 评估每个操作数和转换 它的值为布尔值,就像通过调用一样 到布尔函数。结果是 如果两个值都为true和false,则为true 除此以外。 右操作数不是 评估左操作数 评估为假。
答案 1 :(得分:0)
是的,这取决于实施情况。但是由于XSLT是无副作用的(与C#和其他语言相反,其中一个函数调用某个状态甚至一个赋值可以在表达式中),这无关紧要。