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

Subject: Re: [xsl] making dynamic evaluation via xsl:evaluate more dynamic
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 17 Apr 2012 20:54:25 +0100
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