2012-05-30 5 views
1

При добавлении чисел с использованием XSL, он показывает результат с exponent. Например, если ProductID является 1111XSL показать результат с показателем

<xsl:value-of select="@ProductID + 1000000"/> 

Это что-то вроде 1.1111E6 показывая, однако я хочу, чтобы результат 1001111.

Спасибо.

+1

проверка на использование функции формата. У вас могут быть некоторые подсказки здесь: http://stackoverflow.com/questions/3758978/xslt-format-number-with-comma – BiAiB

ответ

1

Вы предположительно используете преобразование, не относящееся к схеме, поэтому значение @ProductID является нетипизированным, что означает, что когда вы выполняете арифметику, результатом является xs: double. Если вы сделали целочисленную арифметику:

xs:integer(@ProductID) + 1000000 

результат будет являться хз: целое число и будет выводиться как таковой.

В XPath 1.0 вся арифметика xs: double арифметика, но правила преобразования числа в строку скрывают этот факт, требуя вывода «целых чисел», как если бы они были целыми числами.

0

Вы, кажется, использует процессор XSLT 2.0 (все 5-6 различных XSLT 1.0 процессоров, которые я использую производить разыскиваемый ответ - 1001111

С процессором XSLT 2.0, просто конвертировать @ProductID в xs:decimal.:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xsl:output method="text"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/*"> 
    <xsl:value-of select="xs:decimal(@ProductID) + 1000000"/> 
</xsl:template> 
</xsl:stylesheet> 

Когда это преобразование применяется на следующий документ XML:

<t ProductID="1111"/> 

разыскиваемый, правильный результат получается:

1001111 

Обратите внимание:

с помощью xs:decimal(someNumber) конструктор и десятичной арифметики гарантирует максимальную точность результата, в случае someNumber может иметь нецелое значение.

Тип xs:decimal является базовым типом для xs:integer, то есть любой xs:integer также xs:decimal, так что это решение работает и для любых целочисленных значений.

Смежные вопросы