En xsl existe una función que es number() que lo que hace es convertirte una cadena numérica en un número. Supongo que si te devuelve false es porque no es numérica.
Ejemplito de prueba de como quedaría el código:
str2int.xml Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href=str2int.xsl"?>
<prueba>
<cadena>123456789</cadena>
<cadena>Elvira123</cadena>
<cadena>Elvira</cadena>
</prueba>
str2int.xsl Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="cadena">
<xsl:choose>
<xsl:when test="number(text())">
Numerica<br/>
</xsl:when>
<xsl:otherwise>
Cadena<br/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>