|
Subject: Re: RE: [xsl] Creating XPath2 functions:passing a set of nodes, what is the signature construction? From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Thu, 26 Jan 2006 16:46:44 +1100 |
There's an
f:sqrt()
function in FXSL.
Its signature:
<xsl:function name="f:sqrt" as="xs:double">
<xsl:param name="N"/>
<xsl:param name="Eps"/>
............................................................
</xsl:function>
here the first argument is the double to be squared and the second
argument is the desired accuracy (such as 0.0001)
Example of its use:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f"
>
<xsl:import href="../f/func-sqrt.xsl"/>
<!-- To be applied on any source xml.
This also tests the within() function
-->
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/*" name="initial">
sqrt(0.25): <xsl:value-of select="f:sqrt(0.25, 0.00001)"/>
sqrt(1): <xsl:value-of select="f:sqrt(1, 0.00001)"/>
sqrt(2): <xsl:value-of select="f:sqrt(2, 0.00001)"/>
sqrt(4): <xsl:value-of select="f:sqrt(4, 0.00001)"/>
sqrt(9): <xsl:value-of select="f:sqrt(9, 0.00001)"/>
sqrt(13): <xsl:value-of select="f:sqrt(13, 0.00001)"/>
sqrt(16): <xsl:value-of select="f:sqrt(16, 0.00001)"/>
sqrt(25): <xsl:value-of select="f:sqrt(25, 0.00001)"/>
sqrt(36): <xsl:value-of select="f:sqrt(36, 0.00001)"/>
sqrt(49): <xsl:value-of select="f:sqrt(49, 0.00001)"/>
sqrt(64): <xsl:value-of select="f:sqrt(64, 0.00001)"/>
sqrt(81): <xsl:value-of select="f:sqrt(81, 0.00001)"/>
sqrt(100): <xsl:value-of select="f:sqrt(100, 0.00001)"/>
sqrt(121): <xsl:value-of select="f:sqrt(121, 0.00001)"/>
</xsl:template>
</xsl:stylesheet>
Result:
Saxon 8.6.1 from Saxonica
Java version 1.5.0_04
Stylesheet compilation time: 500 milliseconds
Processing file:/C:/Program%20Files/Java/jre1.5.0_04/bin/marrowtr.xml
Building tree for
file:/C:/Program%20Files/Java/jre1.5.0_04/bin/marrowtr.xml using class
net.sf.saxon.tinytree.TinyBuilder
Tree built in 0 milliseconds
Tree size: 25 nodes, 31 characters, 10 attributes
Building tree for file:/C:/CVS-DDN/fxsl-xslt2/f/func-sqrt.xsl using
class net.sf.saxon.tinytree.TinyBuilder
Tree built in 0 milliseconds
Tree size: 80 nodes, 270 characters, 44 attributes
Execution time: 125 milliseconds
Memory used: 5076808
NamePool contents: 62 entries in 59 chains. 11 prefixes, 12 URIs
-------------------------------
sqrt(0.25): 0.5000000795866174
sqrt(1): 1.0000000464611474
sqrt(2): 1.4142156862745097
sqrt(4): 2
sqrt(9): 3.0000000000393214
sqrt(13): 3.6055512902583184
sqrt(16): 4.0000001858445895
sqrt(25): 5.000000000016778
sqrt(36): 6.000000002793968
sqrt(49): 7.000000094930961
sqrt(64): 8.000001273385879
sqrt(81): 9.000009415515176
sqrt(100): 10.000000000107445
sqrt(121): 11.000000001323027
Cheers,
Dimitre Novatchev
On 1/26/06, cknell@xxxxxxxxxx <cknell@xxxxxxxxxx> wrote:
> Thanks, I couldn't find that. On closer examination, it seems the standard
set of XPath2 functions does not include a square root function. I don't feel
up to writing my own, so I won't procede with the standard deviation
function.
> --
> Charles Knell
> cknell@xxxxxxxxxx - email
>
>
>
> -----Original Message-----
> From: Xia Li <xli@xxxxxxxxxxxxx>
> Sent: Wed, 25 Jan 2006 13:46:02 -0800
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Subject: RE: [xsl] Creating XPath2 functions:passing a set of nodes, what
is the signature construction?
>
> You may use occurrence indicator "*" or "+" in <xsl:param>, such as
>
> <xsl:param ... as="xs:double*">
>
> to indicate that a sequence of double is expected.
>
>
> Lisa
>
>
> -----Original Message-----
> From: cknell@xxxxxxxxxx [mailto:cknell@xxxxxxxxxx]
> Sent: Wednesday, January 25, 2006 1:26 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Creating XPath2 functions:passing a set of nodes, what is
> the signature construction?
>
> I am learning XPath2 using Saxon 8.6. I'd like to create a funtion to
> compute the standard deviation of the value of a set of nodes. Is there
> some special way to construct the signature of the function when the
> argument is a set of nodes as opposed to a single node?
>
> I have written a funtion that takes a single node as an argument of type
> xs:double. Is there some special way to state that the function will
> take a set of nodes of type xs:double, or do I simply state that the
> argument will be of type xs:double?
>
> --
> Charles Knell
> cknell@xxxxxxxxxx - email
>
>
--
Cheers,
Dimitre Novatchev
---------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: RE: [xsl] Creating XPath2 funct, cknell | Thread | [xsl] Floating point precision erro, Thang Le |
| [xsl] Floating point precision erro, Thang Le | Date | [xsl] The f:sqrt() and stdDev() fun, Dimitre Novatchev |
| Month |