我正在尝试创建一条具有多个条件的xsl:choose语句来进行测试。到目前为止,我有这样的想法:
<xsl:choose>
<xsl:when test="$AccountNumber != '12345' and $Balance != '0'">
<do stuff here>
...
问题是'and‘被当作'or’来处理。如果账号为12345或账户余额为0,则将条件视为真,并执行代码。我需要的测试是这两个条件都必须为真。我这里的语法是不是错了?
提前谢谢~Tim
发布于 2013-03-20 23:26:53
如果$AccountNumber
或$Balance
是一个节点集,那么这种行为很容易发生。这并不是因为and
被当作or
对待。
例如,如果$AccountNumber
引用值为12345
和66
的节点,而$Balance
引用值为55
和0
的节点,则$AccountNumber != '12345'
将为真(因为66
不等于12345
),<代码>D13将为真(因为<代码>D14不等于<代码>D15)。
我建议试着这样做:
<xsl:when test="not($AccountNumber = '12345' or $Balance = '0')">
只要有一个值为12345
的$AccountNumber
或一个值为0
的$Balance
,$AccountNumber = '12345' or $Balance = '0'
都将为true,如果对其应用not()
,则将得到false结果。
发布于 2013-03-21 00:51:37
我一直使用这种语法,它比使用!=产生更可预测的结果。
<xsl:when test="not($AccountNumber = '12345') and not($Balance = '0')" />
https://stackoverflow.com/questions/15527427
复制相似问题