Subject: [xsl] XSLT 2.0 empty string From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Mon, 28 Feb 2005 12:14:17 -0000 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xsl:variable question, Kai Hackemesser | Thread | RE: [xsl] XSLT 2.0 empty string, Michael Kay |
Re: [xsl] xsl:variable question, James Fuller | Date | Re: [xsl] xsl:variable question, Kai Hackemesser |
Month |