Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: Problem using msxml >Thread Next - Re: Problem using msxml Re: Problem using msxmlTo: NULL Date: 9/8/2004 10:38:00 AM Hi Darren,
I think you might be surprised at the performance 'difference'...
If you tweak the code I gave by replacing...
<xsl:param name="n" select="."/>
with...
<xsl:param name="n" select="string(.)"/>
and replace...
<xsl:variable name="nv" select="substring-before($n,'E')"/>
with...
<xsl:variable name="nv" select="number(substring-before($n,'E'))"/>
that should speed it up.
Compared with using msxsl:number() on MSXML 4.0 over a sample of your data
repeated 20,000 times - I am seeing almost identical times (averaged out on
one of my machines at:- template method = 173.8ms; msxsl:number() method =
173.2ms).
Of course, be aware that msxsl:number() is not consistently supported even
as an MS extension (it isn't supported in MSXML 3.0).
Cheers
Marrow
"darren@w..." <darrenworkcom@d...> wrote in message
news:6EED1412-0908-4AAE-A9A6-8943ECAFF88D@m......
> Thanks for the reply, I have actually gone with Joe's solution above, as
our
> datafiles can be quite large, and predominantly numbers. I there suspect
> the petrformance of further template calls (especially the number that
would
> be required) if a function is available.
>
> Thanks for the post,
>
> Hugh
>
> "Marrow" wrote:
>
> > Hi Darren,
> >
> > You could write a template to handle exponential notation numbers,
something
> > like...
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > xmlns:fo="http://www.w3.org/1999/XSL/Format">
> >
> > <xsl:template match="stuff">
> > <xsl:text>Value: </xsl:text>
> > <xsl:call-template name="exnumber"/>
> > <xsl:text>
> </xsl:text>
> > </xsl:template>
> >
> > <xsl:template name="exnumber">
> > <xsl:param name="n" select="."/>
> > <xsl:choose>
> > <xsl:when test="contains($n,'E')">
> > <xsl:variable name="nv" select="substring-before($n,'E')"/>
> > <xsl:variable name="nexp" select="substring-after($n,'E')"/>
> > <xsl:variable name="exp"
> >
select="substring('1000000000000000000000000000000',1,translate($nexp,'-',''
> > )+1)"/>
> > <xsl:choose>
> > <xsl:when test="$nexp >= 0">
> > <xsl:value-of select="$nv * $exp"/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:value-of select="$nv div $exp"/>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:value-of select="$n"/>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:template>
> > </xsl:stylesheet>
> >
> >
> > HTH
> > Marrow
> > http://www.marrowsoft.com - home of Xselerator (XSLT IDE and debugger)
> > http://www.topxml.com/Xselerator
> >
> >
> > "darren@w..." <darren@w...@discussions.microsoft.com> wrote in
> > message news:B41E4F0B-C97F-452F-8220-1326DE921065@m......
> > > I have an xml file:
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <myspace>
> > > <stuff>5.6</stuff>
> > > <stuff>1.27E-2</stuff>
> > > </myspace>
> > >
> > > I have a stylesheet:
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > > xmlns:fo="http://www.w3.org/1999/XSL/Format">
> > >
> > > <xsl:template match=".//stuff">
> > > Value: <xsl:value-of select="number(.)"/>
> > > </xsl:template>
> > >
> > > </xsl:stylesheet>
> > >
> > >
> > > I expect the results:
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > Value: 5.6
> > > Value: 0.0127
> > >
> > > The results I get:
> > > <?xml version="1.0" encoding="UTF-16"?>
> > > Value: 5.6
> > > Value: NaN
> > >
> > > The parser doesn't seem to support exponential notation for numbers!
> > > Is this true, or am I doing something wrong?
> > > Is there a work around, as I have a lot of data from excel
spreadsheets
> > > that use this notation, and my style sheets are not working well with
> > it!!!
> > >
> > >
> > > Hugh
> > >
> >
> >
> >
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
