Одна возможность состоит в том, чтобы просто обернуть соответствующий бит кода в xsl: if оператор
<xsl:if test="isacute[.]">
<Acute>
<xsl:value-of select="isacute"/>
</Acute>
</xsl:if>
В качестве альтернативы вы можете использовать здесь сопоставление с шаблоном, которое легче расширить, если вы хотите иметь несколько способов вывода элемента.
В вашем случае вместо этого
<Acute>
<xsl:value-of select="isacute"/>
</Acute>
Замените это на
<xsl:apply-templates select="isacute"/>
И затем иметь шаблоны, соответствующие пустым и непустым кейсам
<xsl:template match="isacute[.]"> <!-- Output element here --> </xsl:template>
<xsl:template match="isacute"/>
Вот полный XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://ait.com/componentstatus/">
<xsl:output method="xml" version="4.0" indent="yes" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
<xsl:template match="//NewDataSet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<ComponentStatusList>
<xsl:for-each select="Componentstatus">
<Status>
<xsl:attribute name="StatusId">
<xsl:value-of select="tp_ID"/>
</xsl:attribute>
<StatusName>
<xsl:value-of select="StatusName"/>
</StatusName>
<xsl:apply-templates select="isacute"/>
</Status>
</xsl:for-each>
</ComponentStatusList>
</xsl:template>
<xsl:template match="isacute[.]">
<Acute>
<xsl:value-of select="."/>
</Acute>
</xsl:template>
<xsl:template match="isacute"/>
</xsl:stylesheet>
При применении к вашему образцу XML выводится следующее
<ComponentStatusList xmlns="http://ait.com/componentstatus/">
<Status StatusId="1">
<StatusName>Not inspected</StatusName>
<Acute>1</Acute>
</Status>
<Status StatusId="2">
<StatusName>Acute</StatusName>
</Status>
<Status StatusId="3">
<StatusName>See note</StatusName>
</Status>
<Status StatusId="4">
<StatusName>Acceptable</StatusName>
</Status>
<Status StatusId="5">
<StatusName>Action recommended</StatusName>
</Status>
</ComponentStatusList>