1<?xml version="1.0"?> 2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3 xmlns:exsl="http://exslt.org/common" 4 version="1.0"> 5 6<xsl:key name="tmpls" match="xsl:template" use="@name"/> 7 8<xsl:template match="/"> 9 <xsl:element name="initial"> 10 <xsl:text>Mode of FOO is </xsl:text> 11 <xsl:value-of select="key('tmpls', 'FOO')/@mode"/> 12 </xsl:element> 13 14 <xsl:variable name="fiddle"> 15 <xsl:apply-templates select="//xsl:template"/> 16 </xsl:variable> 17 18 <xsl:apply-templates select="exsl:node-set($fiddle)" mode="faddle"/> 19</xsl:template> 20 21<xsl:template match="xsl:template"> 22 <xsl:copy> 23 <xsl:copy-of select="@*"/> 24 <xsl:attribute name="mode">fiddled</xsl:attribute> 25 </xsl:copy> 26</xsl:template> 27 28<xsl:template match="/" mode="faddle"> 29 <xsl:element name="post-transform"> 30 <xsl:text>Mode of FOO is </xsl:text> 31 <xsl:value-of select="key('tmpls', 'FOO')/@mode"/> 32 </xsl:element> 33</xsl:template> 34 35<xsl:template name="FOO" mode="input"/> 36 37</xsl:stylesheet> 38