Код, который вы предоставляете, никак не связан с XSLT . Пожалуйста, прочитайте хорошую книгу по XSLT, прежде чем задавать такие вопросы.
Вот очень известный способ делать то, что, я думаю, в смысле вашего вопроса:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:variable name="vA">
<xsl:choose>
<xsl:when test="//B">1</xsl:when>
<xsl:otherwise>2</xsl:otherwise>
</xsl:choose>
</xsl:variable>
$vA = <xsl:value-of select="$vA"/>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется к следующему документу XML :
<c>
<d/>
</c>
результат :
$vA = 2
При применении к этому документу :
<c>
<d>
<B/>
</d>
</c>
результат равен :
$vA = 1
Есть более короткий способ получить тот же результат :
<xsl:variable name="vA" select="not(//B) +1"/>