- From: Kay, Michael <Michael.Kay@softwareag.com>
- Date: Tue, 14 Oct 2003 17:52:19 +0200
- To: Sarah Wilkin <swilkin@apple.com>, public-qt-comments@w3.org
- Message-ID: <DFF2AC9E3583D511A21F0008C7E62106073DD1C6@daemsg02.software-ag.de>
You may be aware that a number of XSLT implementations have a function like
this, and that it is included in the EXSLT library (www.exslt.org) under the
name dyn:evaluate().
The XSLT working group decided not to include such a function in the
standard. This is a shame in some ways because the function can indeed be
very useful. The reasons for the decision were: it is quite difficult to
specify it well, especially to define the static and dynamic context for the
function; it makes it difficult to separate the language compiler from the
run-time; it introduces significant complexities for typing. Also, I think
some people felt that it was likely to be used for situations where the
correct solution was higher-order functions (which are also not in this
version of the spec, and which some people feel are a higher priority than
dynamic evaluation).
Clearly there is nothing to stop implementors adding such functions under
their own namespace, or under a third-party namespace such as the one
allocated by the EXSLT group.
Michael Kay
> -----Original Message-----
> From: Sarah Wilkin [mailto:swilkin@apple.com]
> Sent: 14 October 2003 00:58
> To: public-qt-comments@w3.org
> Subject: [F&O] Function for self-evaluation?
>
>
>
> One function we added to our XQuery implementation is eval(), which
> takes a string and evaluates it as an XQuery expression. I'm
> wondering
> if the working group has considered adding such a function.
>
> The most obvious use case is a query that needs to be marked up and
> executed later. For example, in the NIST test suite, a test
> looks like:
> <results>
> {fn:boolean(xs:double("-1.7976931348623157E308"))}
> </results>
> So an implementor is somehow expected to read in the whole file and
> execute it as XQuery. If eval is supported, the same file can become
> <results>
> fn:boolean(xs:double("-1.7976931348623157E308"))
> </results>
> And the test may be evaluated with XQuery itself:
> eval(doc("test.xml")/results/string())
>
> There are, of course, many other uses. The is not merely a
> "convenience
> method" as it could never be written as a user-defined function. Any
> comments are appreciated.
>
> --Sarah
>
Received on Tuesday, 14 October 2003 11:52:52 UTC