XSLT 2.0 enables strings containing numbers in scientific notation to be converted to double-precision floating point numbers simply using the number() function, for example number('1.0e7').
When doubles are converted to strings, e.g string($x+$y), scientific notation is used in XSLT 2.0 if the number is outside the range 1e-6 to 1e+6. There's no way of getting scientific notation for numbers within this range.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference