2010-11-17 81 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

相關問題