RE: Evaluation function

Thank you for your answers.

It sounds that an evaluating expression is an interesting issue for many
users and purposes. I understand, however, how complex it could be to
specify this function, and in particular with regard to the conversion of
the dynamic context to the static evaluation context (e.g. should the
(sub-)expression declare, as "external", the variables to inherit from the
outer context? Should the current date time be reinitialized? etc.).

Nevertheless, I am convinced it is not an impossible process and, should an
evaluate() function be specified, it could have very constraining
specifications. As an example, it may be totally independent from the
static/dynamic context of the calling query. It may also have
implementation-defined or implementation- dependent features such as many
other components of the XQuery language.

My concern is at least to have a standardized/common specification/baseline,
to avoid or minimize the number of different implementations of the same
thing.

Is the debate completely closed?

Regards

-----Message d'origine-----
De : Jonathan Robie [mailto:jonathan.robie@datadirect.com]
Envoye : vendredi 23 juillet 2004 12:04
A : Michael Kay
Cc : 'Stephane Mbaye'; 'XQuery'
Objet : Re: Evaluation function

I was also one of the "one or two of us" who were pushing for this.

Another reason given for delaying is that some people felt second order
functions are more important than eval(), and there is an overlap in the
usage scenarios.

But eval() can do some things second-order functions can't, such as
executing an XQuery expression stored in data.

Jonathan

Michael Kay wrote:

> There is no standard function to do this.
>
> A number of XSLT processors (Saxon was the first) have provided an
> evaluate() function to fill this gap - there is a semi-standardized
> specification at www.exslt.org <http://www.exslt.org>. Unfortunately
> Saxon's version, saxon:evaluate() is not currently available via the
> XQuery interface, only via XSLT. I don't think there's a good technical
> reason for this restriction, it's mainly a question of testing.
>
> One or two of us did push quite hard for a standard evaluate() function,
> but the WG decided against. The main arguments, if I recall, were (a)
> that it broke type safety, (b) that some processors use a compilation
> architecture in which the parser isn't available at run-time, and (c)
> that it's not obvious how much of the static/dynamic context should be
> available to the evaluated expression.
>
> (At least you understand what it is that you're asking for! A lot of
> XSLT users have stumbled into this without knowing what they are doing,
> they try to write things like a[$x] where $x is the string "@foo='bar'"
> I think the problem is that the use of $ to introduce variables is
> associated in some people's minds with macro languages).
>
> Michael Kay

Received on Friday, 23 July 2004 10:54:30 UTC