← all checks
warning //*[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))]

Name starts with a numeric character

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'"/>