[xsl] top level xsl:param confusion

Subject: [xsl] top level xsl:param confusion
From: Robert Koberg <rob@xxxxxxxxxx>
Date: Thu, 30 Sep 2004 13:16:23 -0700
Hi,


I have a top level param like so:


<xsl:param name="permission" select="false()"/>


Main Question:


Is the above top level xsl:param considered false even if it was passed an empty string? I would expect it to be false only if the param was *not* passed.


More info:


I send the param down to the transformation if a user has access to the filesystem otherwise it is not sent. And if they have access I send the path that they are restricted to as the value. Some example values are:

"" -- full project access
"foo" -- access restricted to the 'foo' folder
"foo/bar" -- access restricted to the 'foo/bar' folder

If they have no restriction I want the param value to be 'false()'

The problem (or my misunderstanding) is when I pass down the empty string value - "". So the transformation sees there is a /xsl:stylesheet/xsl:param[@name='permission'] - so it should not evaluate to false(), right? However, it does in both Xalan and Saxon (the only two I tried). I don't see anything in the spec that addresses this.

For example, the following chooses the otherwise when the param is sent to the transformation as an empty string.

<xsl:choose>
  <!--<xsl:when test="boolean($permission)"> or -->
  <xsl:when test="$permission">
<!-- allow access -->
  </xsl:when>
  <xsl:otherwise>
<!-- no access -->
  </xsl:otherwise>
</xsl:choose>

thanks for any clarification,
-Rob

Current Thread