xsl-list
[Top] [All Lists]

XSLT 2.0 empty string

2005-02-28 05:14:17

Consider the following code:

<xsl:variable name="foo" select="nothing" as="xs:string?"/>
        
<xsl:choose>
        <xsl:when test="$foo != ''">A</xsl:when>
        <xsl:when test="$foo = ''">B</xsl:when>
        <xsl:when test="not($foo != '')">C</xsl:when>
</xsl:choose>

When there isn't a <nothing> element, the output is C.  That is:

$foo != '' is false

and

$foo = '' also is false 

Which is strange.  If I do "$foo is empty" then Saxon tells me $foo is a
string and not a nodeset.  After adding the explicit cast, the test
passes:

string($foo) = '' 

Which suggests that $foo isn't a string (so which is it?).  It almost as
if the empty nodeset doesn't get implicitly cast like a 'populated'
nodeset, and the as: attribute is ignored.  Is there a difference
between the way the two are handled?  

Also, is using "!= ''" a bad way of checking if the variable has content
when the variable type is 'xs:string?' (ie optional)?

thanks
andrew

--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>