| 
 
Subject: RE: [xsl] Decimal precision From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 5 Feb 2005 17:20:07 -0000  | 
Dimitre,
I notice that in FXSL-for-XSLT2, you're still using this 1.0 idiom:
   <doubleall:doubleall/>
   
   <xsl:template name="doubleall">
     <xsl:param name="pList" select="/.."/>
     
     <xsl:variable name="vFunDouble"
select="document('')/*/doubleall:*[1]"/>
Is this still necessary? It has very poor performance, because the
stylesheet has to be reparsed at run-time. Wouldn't it now be possible to do
   <xsl:variable name="doubleall:doubleall" as="element()"> 
      <doubleall:doubleall/>
   </xsl:variable>
   
   <xsl:template name="doubleall">
     <xsl:param name="pList" select="()"/>
     
     <xsl:variable name="vFunDouble" select="$doubleall:doubleall"/>
I also changed the representation of the empty sequence to something more
direct.
Also, your template rule:
  <xsl:template name="double" match="*[namespace-uri() = 'doubleall']"
would be more efficient in Saxon as
  <xsl:template name="double" match="doubleall:doubleall"/>
(because the hash lookup on template rules works best when the element name
is known statically)
and it would be better to return an atomic value rather than a text node:
  <xsl:value-of select="2 * $arg1"/>
should be
  <xsl:sequence select="2 * $arg1"/>
(I would also like to see some type declarations added, but that requires
some thought.)
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Dimitre Novatchev [mailto:dnovatchev@xxxxxxxxx] 
> Sent: 05 February 2005 01:43
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Decimal precision
> 
> On Sat, 5 Feb 2005 12:13:08 +1100, Dimitre Novatchev
> <dnovatchev@xxxxxxxxx> wrote:
> > On Fri, 4 Feb 2005 23:32:03 -0000, Michael Kay 
> <mike@xxxxxxxxxxxx> wrote:
> > > x/y/xs:decimal() works only in Saxon 8.2. In earlier 
> releases you have to
> > > write it as
> > >
> > > for $x in x/y return xs:decimal($x)
> > 
> > Or with FXSL:
> > 
> >   sum(  f:map(f:decimal(),  
> /*/*/claim/claim_line/reimbursement_amount)   )
> > 
> 
> The above was intended to show the solution of the OP.
> 
> What in FXSL correspond's to:
> 
>                 for $x in x/y return xs:decimal($x)
> 
> is
> 
>                f:map( f:decimal(), x/y )
> 
> 
> Cheers,
> Dimitre.
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Decimal precision, Dimitre Novatchev | Thread | Re: [xsl] Decimal precision, Dimitre Novatchev | 
| RE: [xsl] Selecting last text() fro, Michael Kay | Date | RE: RE: [xsl] WordML to XML/HTML, Vasu Nanjangud | 
| Month |