//*[name()='xsl:variable' or name()='xsl:template'][@name][contains('0123456789', substring(@name, 1, 1))] | //xsl:function[@name][contains('0123456789', substring(substring-after(@name, ":"), 1, 1))]
Variable, template, and function names must not start with a digit. Such names are invalid identifiers in XPath and XSLT.
Incorrect:
<xsl:variable name="1st" select="'first'"/>
Correct:
<xsl:variable name="first" select="'first'"/>