Есть ли простой способ инвертировать логические значения в xslt - PullRequest
2 голосов
/ 18 ноября 2010

Я хочу сделать 0 => 1 и 1 => 0, есть ли простой способ сделать это в xslt?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

Если $ value является экземпляром или может быть преобразован как числовой тип данных, это будет самое простое выражение:

1 - $value
2 голосов
/ 18 ноября 2010

Существует множество выражений, которые принимают 0 или 1 и оценивают соответственно до 1 или 0. :

@ Алехандро уже указал одно изпростейшие такие выражения, вот другие:

$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)]

Наконец , это эквивалентное выражение XPath 2.0 для узлов $a и $b:

($a,$b) except $v
2 голосов
/ 18 ноября 2010

Функция «не»?

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

, хотя, если вы действительно хотите получить номер, вам нужно использовать функцию «номер»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...