xslt 2.0 is a beautiful language and at the same time it allows constructs, which may trouble anyone.
Look at this valid stylesheet:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/">
<xsl:variable name="x" as="node()" select="."/>
<xsl:variable name="x" as="xs:int" select="***"/>
<xsl:sequence select="$x"/>
</xsl:template>
</xsl:stylesheet>
Fun, isn't it? 