2016-04-22 5 views
1

Учитывая XML:Преобразовать 6,5 номер в XSL

<quest> 
    <g_1> 
    <name>first</name> 
    <value>4,5</value> 
    </g_1> 
    <g_2> 
    <name>first</name> 
    <value>4,5</value> 
    </g_2> 
</quest> 

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

<xsl:value-of select="sum(number(translate(current-group()/VALUE[.!=''],',','.')))" /> 

Это будет работать, но мне не нравится решение. Я не могу не думать о том, что есть функция, например добавление параметра функции number(), задающего символ «,» в качестве decimal-separator при преобразовании или указании языка ввода строки.

Я не могу использовать большинство функций, потому что 6,5, очевидно, еще не является допустимым числом.

Спасибо!

+0

'translate (current-group()/VALUE [.! = ''], ',', '.')' Должен давать ошибку, как только существует более одного значения VALUE. Я думаю, вы скорее хотите «current-group()/VALUE [.! = '']/Translate (., ',', '.')'. –

+0

Спасибо за предупреждение, я добавлю вашу рекомендацию, хотя я предпочитаю не зависеть от перевода, чтобы полностью конвертировать мои 6,5 в число. – ReijMan

+0

Строка, содержащая любые символы, отличные от цифр, десятичная точка и знак минуса, не могут быть преобразованы в число. Вы должны ** начинать с изменения десятичной запятой до точки. –

ответ

0

Нет параметров для number или xs:double или xs:decimal для анализа номеров в другом формате. Поэтому сначала вам нужно использовать некоторую строковую функцию, чтобы получить нужный формат, независимо от того, translate или replace зависит от вас.