XML节点值OR条件判断失效问题求助
XSLT条件判断逻辑错误修复方案
你当前的问题出在逻辑运算符用错了:要判断节点值既不是ABC也不是XYZ,应该用and而非or。
为什么原来的写法全失效?
不管paymentMethodCode的值是什么,你的or条件永远为true:
- 如果值是
ABC,!= 'XYZ'成立,整个or结果为真 - 如果值是
XYZ,!= 'ABC'成立,整个or结果为真 - 如果是其他值,两个判断都成立,
or结果还是真
所以你的<xsl:if>会无条件执行,完全起不到过滤作用。
正确写法示例
写法1:用and连接两个不等于判断
<xsl:if test="applicationData/remittingAccount/paymentMethodCode != 'ABC' and applicationData/remittingAccount/paymentMethodCode != 'XYZ'">
写法2:用not()包裹等于判断的or逻辑(更符合自然语义)
<xsl:if test="not(applicationData/remittingAccount/paymentMethodCode = 'ABC' or applicationData/remittingAccount/paymentMethodCode = 'XYZ')">
写法3:XPath 2.0+支持的简洁语法
<xsl:if test="applicationData/remittingAccount/paymentMethodCode not in ('ABC', 'XYZ')">
你之前尝试的三种错误写法
<xsl:if test="(applicationData/remittingAccount/paymentMethodCode != 'ABC' or applicationData/remittingAccount/paymentMethodCode != 'XYZ')">
<xsl:if test="(applicationData/remittingAccount/paymentMethodCode != 'ABC') or (applicationData/remittingAccount/paymentMethodCode != 'XYZ')">
<xsl:if test="applicationData/remittingAccount/paymentMethodCode != 'ABC' or applicationData/remittingAccount/paymentMethodCode != 'XYZ'">
内容的提问来源于stack exchange,提问作者Pooja
相关产品推荐
相关产品推荐

