Hallo,
Deine Variable ist eigentlich unsinngi, denn du hast _alles_ in der Variable hineingeschrieben und sie soll sich dazu selbst überprüfen. Das geht eben nicht, wie du festgestellt hast.
Und eigentlich brauchst du keine Variable:
<xsl:for-each select="/VORGABE/BMS">
xsl:choose
<xsl:when test="string-length(@BM1) < 2">
<TD width="2%"> <xsl:value-of select="@BM1" /> </TD>
</xsl:when>
xsl:otherwise
<TD width="2%"><span class="verticaltext"><xsl:value-of select="@BM1" /></span> </TD>
</xsl:otherwise>
</xsl:choose>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="@BM2" /></span> </TD>
<TD width="2%"> <span class="verticaltext"><xsl:value-of select="@BM3" /></span> </TD>
</xsl:for-each>
Kann man eine Variable irgendwie löschen?
Nein. Dafür gibt xsl:param und bei Bedarf ein recursiver Template.
Grüße
Thomas