xsl-list
[Top] [All Lists]

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

2007-05-10 16:23:07
Actually:

In XSLT 2.0, if you create an element node as part of the sequence
constructor for an attribute node, the elements are atomized. So

<e>
  <xsl:attribute name="n">
    <e>23</e>
  </xsl:attribute>
</e>

generates <e n="23"/> - it's not an error.

In XSLT 1.0, if you do the same thing, it's a recoverable error:
"implementations may either signal the error or ignore the offending nodes".
It's never been clear whether this means "ignore the offending nodes and all
their descendants". So you might get an error, or <e n=""/>, or <e n="23"/>.

I suspect that the error that occurred was due to infinite recursion and not
to creating invalid XML structures, but it's really impossible to know from
the information that was given. In any case, the stylesheet needs a complete
redesign, so the details aren't very relevant.

Michael Kay
http://www.saxonica.com/ 


-----Original Message-----
From: bryan rasmussen [mailto:rasmussen(_dot_)bryan(_at_)gmail(_dot_)com] 
Sent: 11 May 2007 00:09
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] "re-calling" a template from <a> anchor

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(_dot_)bryan(_at_)gmail(_dot_)com> 
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(_dot_)online(_at_)xs4all(_dot_)nl> 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




--~-----------------------------------------------------------------
- XSL-List info and archive:  
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--