Subject: RE: [xsl] Coding aroung a "Cannot convert zero-length string to an integer" error From: "Angela Williams" <Angela.Williams@xxxxxxxxxxxxxxxxxx> Date: Mon, 13 Aug 2007 09:57:44 -0500 |
That's my case exactly. Thanks for the clarification. Thanks! Angela -----Original Message----- From: Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx] Sent: Monday, August 13, 2007 9:55 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Coding aroung a "Cannot convert zero-length string to an integer" error On 8/13/07, Angela Williams <Angela.Williams@xxxxxxxxxxxxxxxxxx> wrote: > I've found problems with using the not($stringIsEmpty) construct where > I get a false true result, I suspect due to the presence of a node-set > that is empty as opposed to an empty string. That's probably because you haven't typed your parameters - if you pass <foo> to a function that expects a string then <foo> gets converted into a string, which is the same as not(xs:string(foo)). If you pass <foo> to a function whose parameter is untyped the you have not(foo) which is false for <foo/> So basically always type your parameters - if you're expecting a string that can be empty then you want: <xsl:param name="foo" as="xs:string?"/> ...and then using test="not($foo)" should be fine. > I've found if (not(string-length($input-date) eq 0 ) to be much more > reliable, if more verbose. I'm using Saxon 8.9 and XSLT 2.0. > > Are there other considerations for choosing one solution vs. the other? Apart from not needing to do it, Mike Kay has suggested that string-length is relatively expensive because of the need to sort out surrogate pairs before counting characters. cheers andrew -- http://andrewjwelch.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Coding aroung a "Cannot c, Michael Kay | Thread | RE: [xsl] Coding aroung a "Cannot c, Angela Williams |
Re: [xsl] Coding aroung a "Cannot c, Andrew Welch | Date | RE: Re: [xsl] Coding aroung a "Cann, cknell |
Month |