RE: [xsl] an expression to check if a parameter is a non-zero number - comments

Subject: RE: [xsl] an expression to check if a parameter is a non-zero number - comments
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 31 Oct 2003 10:54:14 -0000
> 
> That works perfectly.
> 
> test="number($ImageWidth)" <- perfect
> 
> test="number($ImageWidth)!=0" <- tried it but apparently it 
> did not satisfy the cases I needed.
> 
> e.g. When the value was 100mm the second test did not work as 
> it should.

Yes, I was wrong. NaN!=0 is true. Wendell's test is better.

Michael Kay

> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> xmlns:fo="http://www.w3.org/1999/XSL/Format";>
> <xsl:template match="/">
> <xsl:variable name="ImageWidth">100mm</xsl:variable>
> <xsl:comment>before</xsl:comment>
> 				<xsl:if
> test="number($ImageWidth)"><xsl:value-of
> select="$ImageWidth"></xsl:value-of></xsl:if>
> <xsl:comment>after</xsl:comment> <xsl:comment>before</xsl:comment>
> 				<xsl:if
> test="number($ImageWidth)!=0"><xsl:value-of
> select="$ImageWidth"></xsl:value-of></xsl:if>
> <xsl:comment>after</xsl:comment>
> 
> </xsl:template>
> </xsl:stylesheet>
> 
> 
> Abhishek Sanwal
> HP - Houston Campus
> abhishek.sanwal@xxxxxx
> 
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Wendell Piez
> Sent: Thursday, October 30, 2003 1:09 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] an expression to check if a parameter is a 
> non-zero number - comments
> 
> Abhishek,
> 
> At 01:33 PM 10/30/2003, you wrote:
> ><xsl:when
> >test="true(string-length(translate($ImageWidth,'0123456789.',
> '')) = 0 
> >and $ImageWidth != 0)">
> >
> >I want to check if the incoming parameter ImageWidth is a non-zero 
> >number.
> >
> >I am wondering it the above expression would work?
> 
> Take it out of the spurious true() function, and it should, but....
> 
> (There is a function true() but it doesn't take any 
> arguments, it simply
> 
> returns the Boolean value "true").
> 
> >Is there a better way to do that checking ?
> 
> Try test="number($ImageWidth)"
> 
> If $ImageWidth is a number, it'll test as true unless its value is 0.
> 
> If $ImageWidth is a string, it'll be turned into a number by the
> number() 
> function, and test as true unless it is 0 or NaN ("not-a-number").
> 
> If $ImageWidth is a node-set, the first node in it will be 
> converted into a 
> string, and test as above. Same if it's a result-tree-fragment.
> 
> If $ImageWidth is a Boolean, it'll be true if it's true, false if not.
> 
> 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
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread