2010-11-17 139 views
2

我想使0 => 1和1 => 0,是否有一种简单的方法来做到这一点在xslt?有没有简单的方法来反转布尔值在xslt

+0

的方法有很多,但背景会赚差价。此外,什么是“简单”标准? – 2010-11-17 23:16:38

+0

这实际上是一个XPath问题。 – 2010-11-17 23:53:11

+0

好问题,+1。除了@Alejandro的优秀例子,请参阅我对其他简单短语的回答。 – 2010-11-18 00:14:43

回答

2

如果$值的实例或浇注料为数字数据类型,这将是最简单的表达式:

1 - $value 
2

“不”功能?

http://zvon.org/xxl/XSLTreference/Output/function_not.html

但如果你真的想要的号码,您需要使用“数字”功能

+0

这个'number(not($ value))'是'number(not(boolean($ value)))':三个函数调用。有人可能会问这是什么意思,简单的标准。 – 2010-11-17 23:19:06

+0

公平点,我认为这一切都取决于所需的输入和输出实际上是布尔值还是数字 – 2010-11-17 23:48:59

2

有许多表达式分别采取01和评估,以10

@Alejandro已经指出,最简单的这种表现之一,这里有其他人:

$a + $b - $v 

这是@亚历公式1 - $v)的推广和转化$a$b$b$a对于任意两个数字$a$b

$v = 0 

形式上需要将其编写为:number($v = 0),但在XPath 1.0中,如果在其他表达式中使用此表达式(其中需要数字),转换将自动完成(在场景后面)。

并且还

$v + 1 mod 2 

甚至

substring('01',$v+1) 

在XPath 2.0存在对这样的表达式自然语言支持:

if($v eq $a) 
    then $b 
    else $a 

或者更短:

($a,$b)[not(. eq $v)] 

最后,这是节点$a$b等价的XPath 2.0表达式:

($a,$b) except $v 
+0

+1对于通用公式。我应该解释一下。 – 2010-11-18 12:52:55

相关问题