Re: [xsl] "re-calling" a template from <a> anchor

Subject: Re: [xsl] "re-calling" a template from <a> anchor
From: "bryan rasmussen" <rasmussen.bryan@xxxxxxxxx>
Date: Fri, 11 May 2007 01:08:51 +0200
to clarify, I mean that it looks like you are doing wrong the last two
things abel suggested you were doing wrong, and I tried to show an
example of how it looked like you were doing it wrong.

Cheers,
Bryan Rasmussen

On 5/11/07, bryan rasmussen <rasmussen.bryan@xxxxxxxxx> wrote:
I'm thinking it looks like abel's last two suggestion, an unending
recursion with the recursion writing elements inside of elements.

the template test writes out an a element with a href attribute.

<a href=""></a>

but you call it again, in the way you're doing it means you would be
trying to do this:

<a href="<a hreff=""></a>"></a>

also you are doing it in such a way that it looks like it will keep
calling itself with howmany = 10 after the first time you reach
howmany = 10.

You probably need to specify closer what you want, most here could
help you solve these particular problems but without knowing clearly
what you want the solution wouldn't be any big help, I guess.

Cheers,
Bryan Rasmussen
On 5/10/07, Abel Braaksma <abel.online@xxxxxxxxx> wrote:
> Vaduvoiu Tiberiu wrote:
> > Hi all. Can anyone tell me if it's possible to "re-call" a template from an anchor? something like:
> >
> > <xsl:template name="test">
> >     <xsl:param name="howmany" select="5">
> >         <xsl:value-of select="parent/child[position()>$howmany]/>
> >                 <a><xsl:attribute name="href"><xsl:call-template name="test"><xsl:with-parameter name=howmany select=10></....</a>
> >
> > I tried it but I get an Http error 500. So I'm trying to display a fixed number(e.g. 5) of elements and have a link wich when clicked displays the next 5 elements let's say. The only way I figured to do it was to call the same template but I can't make it work. Anyone have any solution? 10x
> >
>
> Not sure what you are trying here. MK already pointed out that you may
> not understand the processing model. You recursively call a template to
> create an attribute, which is fine, but unlikely to create what you want
> (an attribute can't contain an element, which is what your code seems to
> imply...), since your snippet is not well-formed XML, or even XSLT, so I
> can't tell for sure without seeing more.
>
> Error 500 means: internal error. If you use Cocoon, you should be able
> to find the XSLT error in the logs. My guess is, since you are
> recursively calling a template inside xsl:attribute, that the error is
> something like "can't create element inside an attribute" or similar. Or
> is just says "syntax error"... Or... since this recursive loop won't
> end, it just runs out of stack space.
>
> Cheers,
> -- Abel

Current Thread