![]() |
![]() | ![]() | ![]() | 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:34:00 AM Thats a curious result, Marrow - are you saying that explicity telling the MSXML parser to 'type' the data gives a performance improvement over letting it implicitly determine the data type, in this case ? I wonder, is this a general method for improving XSLT parse performance, or is it specific to MSXML ? Cheers - Neil On Wed, 8 Sep 2004 10:38:26 +0100, "Marrow" <m--a-r-r-o-w@m-a-r-r-o-w--s-o-f-t.com> wrote: >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 | |||||
|
