2004-11-15

Overbodige variabelen in xslt's

Bij het beantwoorden van een vraag van Marc viel mijn oog (in dit geval in sfx-button.xslt) op een sutiatie die ik de laatste tijd vaker tegenkwam, waarin eerst een variabel wordt gevuld, die dan vervolgens wordt afgedrukt, zoals in het volgende fragment:
<xsl:when test="artikel/auteur/corporatie/naam and artikel/auteur/corporatie/naam!=''"><xsl:variable name="must-urlencode-it">
<xsl:call-template name="urlencode">
<xsl:with-param select="artikel/auteur/corporatie/naam" name="string">
</xsl:call-template>
</xsl:variable>
<xsl:text>&aulast=</xsl:text>
<xsl:value-of select="$must-urlencode-it">
</xsl:when<>/xsl:value-of></xsl:with-param>
Dit fragment doet precies het zelfde als het volgende:
<xsl:when test="artikel/auteur/corporatie/naam and artikel/auteur/corporatie/naam!=''">
<xsl:text>&aulast=</xsl:text>
<xsl:call-template name="urlencode">
<\xsl:with-param select="artikel/auteur/corporatie/naam" name="string">
</xsl:call-template>
</xsl:when></xsl:with-param>
en omdat lege velden niet in de database mogen voorkomen kan het nog eenvoudiger:
<xsl:when test="artikel/auteur/corporatie/naam">
<xsl:text>&aulast=</xsl:text>
<\xsl:call-template name="urlencode">
<xsl:with-param select="artikel/auteur/corporatie/naam" name="string">
</xsl:call-template>
</xsl:when></xsl:with-param>
Vooral omdat het in dit geval gaat om de inhoud van een attribuut, waardoor xmlspy tientallen van dit soort constructies op één regel zet, zou ik iedereen willen vragen niet alleen te zoeken naar een constructie die werkt, maar ook even na te denken over de vraag of het niet eenvoudiger kan. Hier scheelt het m.i. behoorlijk in de leesbaarheid, en dus in de onderhoudbaarheid.
Age Jan

No comments: