you're making it a lot more complicated than it need be.
<xsl:when test="local-name(parent::node())='Link'">
<xsl:when test=""self::Link">
<xsl:if
test="local-name(../../following-sibling::node())='Caption'">
<xsl:if
test="../../following-sibling::Caption">
<Caption>
<xsl:attribute name="align">
<xsl:value-of select="'bottom'"
/>
</xsl:attribute>
<xsl:value-of
<Caption align="bottom">
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list