Lists Home |
Date Index |
On Tue, 2004-05-04 at 14:12, Nicholas Shanks wrote:
> Hey all, I'm an XML newbie so go easy on me :o)
> I am writing a DTD and XSLT file for a table of astronomical data, and
> would like values to be given in SI units. For many things this means
> astronomically large numbers like 5.0 x 10^30. I would like not to have
> to specify that using standard decimal notation (as used by
> format-number() and xsl:decimal-number) as it would be prone to errors
> and look awful! Is there a built-in way to parse a string such as "5.0
> x 10^30" and then perform mathematical operations on it, like divide it
> by the mass of the sun (1.99 x 10^30), so it outputs a simpler number
> like "2.5" ?
> If there is no such built in method, how would I go about writing some
> XSL/XPath voodoo to make it happen?
XSLT is excellent for transforming XML documents, but it is not
optimized for handling mathematics.
It would be easier to split the process into steps. Use XSLT for the XML
transformation, and some other programming language to do the math.
If you use a scripting language, such as Perl, the conversion between
strings and numbers is automatic. There are also plenty of math
libraries that you might find useful, such as Math::BigInt,
Physics::Unit, and others. (Check out http://www.cpan.org/.)