我需要检查3个条件,如果有任何条件是真的我需要执行一些东西,我试过下面:
Value='Java';
<xsl:if test="Value!='Java' or Value!='Python' or Value='James' ">
Do some Stuff....
</xsl:if>
如果我将Java作为Value
传递,那么它会进入内部,如果......有什么不正确吗?
答案 0 :(得分:1)
您有一个逻辑错误,可能误解了变量在XSLT中的工作方式。
当然,当Value
为'Java'
时,您的测试正在通过,因为它必然不等于'Python'
,因此第二个子句通过,然后逻辑OR表达式为真且测试通行证。
如果你想确保测试仅在Value是其他值时通过,那么使用连词而不是析取:
<xsl:if test="Value!='Java' and Value!='Python' and Value!='James' ">
<!-- do something -->
</xsl>
如果Value
不是'Java'
,'Python'
或'James'
,则条件会通过。
更新:根据OP评论:
使用并按照您的建议,但当我将SAP作为值传递时,它就会发生 如果条件在里面..根据我的逻辑,它应该只有 詹姆斯
当Value
为SAP
时,它不属于Java
,Python
或James
,因此当然条件为真。如果您希望仅在James 的情况下继续 ,则将条件简化为
<xsl:if test="Value='James'">
<!-- do something -->
</xsl>
在
<xsl:if test="Value!='Java' and Value!='Python' and Value!='James' ">
Value
不是变量,它是针对当前上下文节点的子元素的测试。如果存在Value
子元素,则在显示的测试中使用其字符串值。
你写过吗
<xsl:variable name="Value" select="'Java'"/>
<xsl:if test="$Value!='Java' and $Value!='Python' and $Value!='James' ">
然后Value
将是一个变量。