Is that XSLT 1.0 or 2.0? Can you change the XSLT to have
Code:
<xsl:param name="param-name" select="/.."/>
as the default value? That would be an empty node set so you could check
Code:
<xsl:if test="not($param-name)">...</xsl:if>
to check for that empty node set as a default.
In case of XSLT 1.0, check whether the processor supports
http://exslt.org/exsl/functions/object-type/index.html, if so you can check
Code:
<xsl:param name="param-name"/>...
<xsl:if test="exsl:object-type($param-name) = 'string' and $param-name = ''">...</xsl:if>
, with XSLT 2.0 you can use
Code:
<xsl:param name="param-name"/>...
<xsl:if test="$param-name instance of xs:string and $param-name = ''">...</xsl:if>