This looks very interesting. I'm going to give it a go.
Michael Kay wrote:
An alternative you might consider is the Novatchev "dynamic templates"
method.
Change
<xsl:template name="xyz">
to
<xsl:template match="xyzPage" mode="switch">
<xsl:param name="$current-node"/>
Create an element <xyz/> (e.g. in a document switch.xml)
Change
<xsl:choose>
<xsl:when test="$p='xyz'">
<xsl:call-template name="xyzPage"/>
etc. etc.
to
<xsl:apply-templates
select="document('switch.xml')/switch/*[name()=$p]">
<xsl:with-param name="current-node" select="."/>
</xsl:apply-templates>
For greater efficiency, use keys.
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list