xsl-list
[Top] [All Lists]

Re: Numbers containing 'e+..' not recognised as numbers

2005-07-04 12:03:28
On 3 Jul 2005, at 21:34, Dimitre Novatchev wrote:

On 7/4/05, Drew McLellan <lists(_at_)allinthehead(_dot_)com> wrote:

I'm using the MSXML2 processor form with an ASP script, trying to
transform a source xml document to xhtml.

The problem is that my source document contains elements with
attributes whose values are numeric. Sometimes these values are
expressed in a format such as "4.364976000000000e+002". The xsl
processor doesn't recognise these as numbers, and so format-number()
or any function that requires a number as input simply returns NaN.

I've tried using the number() function to convert to a number, but
this has been unsuccessful.

I'd be extremely grateful if anyone could

a) suggest a method to get these numbers recognised as numbers, or
b) suggest the correct mathematical term for these 'e+..' numbers so
I can search more effectively!

I always sucked at mathematics :)


XPath 1.0 does not recognize numbers in scientific notation. XPath 2.0 does.

I'd therefore recommend using an XSLT 2.0 processor such as Saxon 8.4
or Saxon.NET to solve this problem.

Numbers in scientific notation could be converted to xs:double using
FXSL for XSLT 2.0 in the following way (note that any base -- not only
10 -- is supported):

<suggested solution snipped />

Thanks for the detailed response Dimitre. I'll definitely going to look into Saxon.NET for the next phase of this project to see if it would be a beneficial solution for us.

For the time being, stuck with the MS processor, I've gone with using the msxsl extensions to embed a JScript function to do the conversion, as Michael suggested. Every bone in my body hates the idea of implementing a vendor-specific extension, but the project is tied to Microsoft solutions in other far more drastic ways, so I guess I can let it slide ;)

Thanks again for the help.

drew.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--