Something which might work for you in this particular instance would be
to replace
<xsl:template match="B" mode="id1">
whatever
<xsl:apply-templates select="self::B" mode="table"/>
</xsl:template>
<xsl:template match="B" mode="table">
table
</xsl:template>
with
<xsl:template match="B[(_at_)ID='id1']">
whatever
<xsl:call-template name="b-table"/>
</xsl:template>
<xsl:template match="B" name="b-table">
table
</xsl:template>
Niko Matsakis
--
DataPower technology
http://www.datapower.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list