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

Subject: [xsl] making dynamic evaluation via xsl:evaluate more dynamic
From: Jakub Malý <jakub@xxxxxxx>
Date: Tue, 17 Apr 2012 19:53:53 +0200
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