Re: [xsl] help with recursive function

Subject: Re: [xsl] help with recursive function
From: Mario Madunic <hajduk@xxxxxxxx>
Date: Tue, 6 May 2008 09:40:38 -0700
Thanks Andrew for that, the error message now tells me which line in the
function is causing the problem. Still perplexed but now have a focus.
Thanks
Mario

line in question now

<xsl:value-of select="f:f_UpperLowerCaseFix($l_StringAfterDelimiter)" />


Quoting Andrew Welch <andrew.j.welch@xxxxxxxxx>:

> 2008/5/6 Mario Madunic <hajduk@xxxxxxxx>:
> >  I'm having a problem with a recursive function in 2.0.
> 
> >  [xslt] e:\XSLT\cleanUp.xsl:259: Fatal Error! A sequence of more than one
> item is
> >  not allowed as the first argument of concat()
> 
> >   <xsl:value-of select="concat(f:f_UpperLowerCaseFix(.), if (not(position()
> =
> 
> Without looking too closely, first you should always declare the type
> and cardinality of the function's return value, so change:
> 
> >   <xsl:function name="f:f_UpperLowerCaseFix">
> 
> to <xsl:function name="f:f_UpperLowerCaseFix" as="xs:string">
> 
> (a single string)
> 
> >     <xsl:param name="p_String" />
> 
> ...you should also declare the type and cardinality of the param but
> that's likely to be a side issue here.
> 
> So, with the function's return type declared as a single string, the
> processor will throw an error as soon as the second item in the
> sequence is added (before it ever gets to the concat function) - with
> good xsl:message output or the help of a debugger you should be able
> to determine where the problem is.
> 
> -- 
> Andrew Welch
> http://andrewjwelch.com
> Kernow: http://kernowforsaxon.sf.net/

Current Thread