Re: [xsl] top level xsl:param confusion

Subject: Re: [xsl] top level xsl:param confusion
From: Robert Koberg <rob@xxxxxxxxxx>
Date: Thu, 30 Sep 2004 15:51:39 -0700
Hi,

Wendell Piez wrote:

Robert,

At 06:09 PM 9/30/2004, you wrote:

Hi and thanks,

I was hoping to get the benefit of a quick boolean test. Perhaps this is a JAXP thing? I would think setting a parameter to an empty string:

transformer.setParameter("permission", "");

would equate to (if the permission param was not sent):

<xsl:param name="permission" select="''"/>
(since that is what I am passing)


Yes, but if you then test="$permission", the test will fail, because the empty string tests as false. (This is what David and others have tried to tell you.)

I got that after after a few other posts (especially Wolgang's and Bertoni's).


fact of life...


Setting the parameter to default to "false()" is not the same as setting it to have no value: it has a value, precisely, of Boolean false.

Yes, I get that. If the parameter is not sent to the transformation then I want it to be false(). My thinking was that:


<xsl:if test="$myBool">

</

is more performant than:

<xsl:if test="not($myStr='')">

</


When an empty string is coerced to a Boolean, as it always is when it is tested directly, it also gets a value of false.

I realize it is in the spec (now...) and I have to live with it. I guess I was thinking along the lines that:


'' != false()

in any other languages I have dealt with,

Also, it appears to be inconsistent (I understand a @test is not a @select, ) that:

<xsl:value-of select="''"/>

does not output false. So if it can be selected and output then why should it evaluate to false?

just rambling... :)


To me, this seems like a bug for java processors (at least Saxon and Xalan)


No, it's the way the spec outlines the built-in casting of datatypes.

If it were my project, I'd set the default to the string ".", which would not test as false, and which conveniently means, in most directory-traversal syntaxes, the current working directory.

That is what I did :) (actually './')


thanks,
-Rob



Cheers, Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================


--+------------------------------------------------------------------ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/ or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx> --+--

Current Thread