xslt 1.0 как проверить номера - PullRequest
4 голосов
/ 01 августа 2011

Как я могу проверить, является ли значение элемента числом или может быть преобразовано в число?

Что мне нужно сделать, это скопировать значение, если оно является числом, и заменить его на 99, если оно являетсястрока

Ответы [ 3 ]

2 голосов
/ 01 августа 2011

string (number ($ x)) = 'NaN' проверяет, можно ли преобразовать $ x в число.

1 голос
/ 01 августа 2011

В дополнение к правильному ответу @Michael Kay:

number($x) = number($x)

это выражение true() точно, когда $x преобразуется в число

Здесь мы используем тот факт, что:

  1. Если $x не число, то number($x) по определению равно NaN

  2. NaN не равно ни одному значению, даже NaN

Теперь ваш последний вопрос :

Что мне нужно сделать, это скопировать значение, если оно является числом, и заменить это с 99, если это строка

Используйте

  $x * (number($x) = number($x))
+
  99 * not(number($x) = number($x))

Объяснение : Логическое значение преобразуется в число (true() -> 1, false() -> 0), когда оно является частью числового выражения. В вышеприведенном выражении один из аргументов + будет 0, а один будет 1 в зависимости от того, является ли $x числом или не является.

1 голос
/ 01 августа 2011

Вы можете использовать функцию «число» -

http://www.zvon.org/xxl/XSLTreference/Output/function_number.html

...