In saxon 6.5.2 there is the wonderful saxon:evaluate(string) for dynamic evaluation of expressions.
In saxon 7.4 the functionality of this extension has been limited: you can not say any more things like this:
 
saxon:evaluate(concat('$', $variablename))
 
Now I am writing generic stylesheets for XSLFO typesetting of books. I use 5000 xsl:variable elements, which are read by some generic stylesheets. The generic stylesheets rely heavily on dynamic fetching of these values, in fact, they are smaller in size than the <xsl:variable name="x" select="'y'"/> statements together!
 
As an example, many different parts in a book require an inline layout, so I have a lot of variables
like
 
<xsl:variable name="front-matter-paragraph.font-family" select="'10pt'"/>
<xsl:variable name="front-matter-paragraph.font-weight" select="'normal'"/>
<xsl:variable name="front-matter-paragraph.font-style" select="'normal'"/>
<xsl:variable name="front-matter-paragraph.font-variant" select="'normal'"/>
 
<xsl:variable name="seclevel1-heading.font-family" select="'18pt'"/>
<xsl:variable name="seclevel1-heading.font-weight" select="'bold'"/>
<xsl:variable name="seclevel1-heading.font-style" select="'normal'"/>
<xsl:variable name="seclevel1-heading.font-variant" select="'small-caps'"/>
 
In order to use these variables, I have a generic template setup-font that needs only one parameter:
the kind of text to be formatted:
 
<xsl:call-template name="setup-font">
    <xsl:with-param name="kind" select="'seclevel1-heading'"/>
</xsl:call-template>
 
It is only possible to write such a generic template using the saxon-6.5.2:evaluate:
 
<xsl:template name="setup-font">
    <xsl:param name="kind"/>
    <xsl:variable name="family" select="saxon:evaluate(concat('$', $kind, '.font-family'))"/>
    <xsl:variable name="weight" select="saxon:evaluate(concat('$', $kind, '.font-weight'))"/>
    <xsl:variable name="style" select="saxon:evaluate(concat('$', $kind, '.font-style'))"/>
    <xsl:variable name="variant" select="saxon:evaluate(concat('$', $kind, '.font-variant'))"/>
</xsl:template>
 
As you can see, the 7.4 restriction on saxon:evaluate will prevent me painfully from modularizing my stylesheets.
 
My question: can we hope to see the full force of saxon:evaluate back again in the future, or, is there some way around this?
 
Dirk Roorda