Well, here is an example of what I think is a bad design:
<xsl:template match="person">
<xsl:call-template name="getName" />
</xsl:template>
<xsl:template name="getName">
<xsl:value-of select="givenName" />
<xsl:text> </xsl:text>
<xsl:value-of select="familyName" />
</xsl:template>
The getName template uses the context node at the point the
template was called in order to resolve the two paths
("firstName" and "surname").
Then you'll be pleased to hear that xsl:function in XSLT 2.0 won't allow
you to access the context node at the point the function was called -
you have to supply it as an explicit argument.
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