[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] making dynamic evaluation via xsl:evaluate more dynamic


Subject: Re: [xsl] making dynamic evaluation via xsl:evaluate more dynamic
From: Philip Fearon <pgfearo@xxxxxxxxxxxxxx>
Date: Tue, 17 Apr 2012 22:50:37 +0100

Just a thought - now XPath 3.0 has the Let Expression, wouldn't it be
possible to safely wrap the XPath string with a Let Expression that
declares the dynamic variables - before passing this as a parameter to
xsl:evaluate?

Phil

2012/4/17 Michael Kay <mike@xxxxxxxxxxxx>:
> By all means raise this feedback with the XSL WG. The best way to do so is
> via the W3C bugzilla system - that's the way the WGs manage their agenda.
>
> I think the answer is that no-one has previously suggested a need for this
> feature. It strikes me as raising a lot of questions. In your use case, how
> do you find out what external variables the XPath expression uses, so that
> you can bind the right names? If you don't know the names statically, you
> presumably need some way to discover them dynamically. But then, knowing
the
> names of the parameters isn't much use if you don't know their semantics;
> where does this knowledge come from?
>
> Michael Kay
> Saxonica
>
>
> On 17/04/2012 18:53, Jakub Mal} wrote:
>>
>> Hello,
>> the new instruction evaluate allows for dynamic evaluation of expressions
>> in
>> stylesheets.
>> This:
>> <xsl:evaluate xpath="'1 + 1'">
>> </xsl:evaluate>
>> Returns 2
>>
>> All variables in the evaluated expression must be bound using with-param,
>> like in
>> <xsl:evaluate xpath="'$p1 + $p2'">
>>   <xsl:with-param name="p1" select="1" />
>>   <xsl:with-param name="p2" select="2" />
>> </xsl:evaluate>
>> Which returns 3.
>>
>> The syntactic rules for with-param are I think the same as in the case of
>> call-template. Aren't those unnecessarily restrictive in this case?
>> I suppose (please correct me, if I am wrong) the cost of dynamic
>> evaluation
>> would not change much, if attribute value template was allowed for the
>> attribute name of with-param in evaluate, such e.g.:
>> <xsl:evaluate xpath="'$p1 + $p2'">
>>   <xsl:with-param name="{'p' || '1'}" select="1" />
>>   <xsl:with-param name="{'p' || '2'}" select="2" />
>> </xsl:evaluate>
>>
>> Did this question arise when semantics of evaluate was discussed?
>> I have encountered an application where this would come in handy (well, it
>> would provide an alternative solution to a problem which I solved
>> differently), so maybe those applications that require dynamic evaluation
>> would appreciate it as well. I was a bit surprised that it is not
>> possible,
>> because it feels appropriate to me. When dealing with dynamic evaluation,
>> why not let the names of variables to by dynamic as well?
>>
>> Jakub Maly.
>> http://www.xrg.cz


Current Thread
Keywords