Saxon and Xalan execute this XSL differently. 
Saxon finds the "xsl:when" test true; Xalan finds it false.
Isn't false correct?

Xalan-J 2.7 (Interpreted) displays Puffins
Saxon 8.7J                displays Penguins

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match='/'>
  <xsl:variable name='v'/>
  <xsl:variable name='w'><xsl:value-of select='$v'/></xsl:variable>
  <xsl:message>
    <xsl:choose>
      <xsl:when test='$w'>Penguins</xsl:when>
      <xsl:otherwise>Puffins</xsl:otherwise>
    </xsl:choose>
  </xsl:message>
</xsl:template>
</xsl:stylesheet>