XSLT 2.0 empty string
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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format