Я пропустил следующее через Saxon 8.7.3J и Saxon-HE 9.3.0.8J:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:variable name="count1">
<xsl:variable name="tmp1"><x y="z"><x/></x></xsl:variable>
<xsl:for-each select="$tmp1/x/x">
<xsl:number level="any" from="x[@y='z']" />
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<xsl:message select="$count1"/>
</xsl:template>
</xsl:stylesheet>
и они оба напечатали '2':
~ zacharyyoung$ java -jar ~/Downloads/saxonb8-7-3j/saxon8.jar ~/so.xsl ~/so.xsl
2
- и-
~ zacharyyoung$ java -jar /usr/local/saxon9he.jar -s:so.xsl -xsl:so.xsl
2
<?xml version="1.0" encoding="utf-8"?>
РЕДАКТИРОВАТЬ 1
Версия, указанная в комментарии ОП к этому ответу, действительно печатает '1':
~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar ~/so.xsl ~/so.xsl
1
~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar
No source file name
Saxon 8.7J from Saxonica
...