Re: [xsl] recursivity and param

Subject: Re: [xsl] recursivity and param
From: Dimtre Novatchev <dnovatchev@xxxxxxxxx>
Date: Thu, 12 Aug 2004 21:53:05 +1000
As other people have pointed out, the specific problem you provide
does not require recursive processing at all -- a simple XPath
expression suffices.

The answer to your more general question (in case I understand it
correctly) is provided by the Tree Visitor pattern, which is a generic
pattern of transformation by visiting every node in a sequential
(document) order. This provides for the finest level of granularity
possible with XSLT. An obvious shortcoming may be the very deep
recursive processing, however there are proven ways to solve this
problem -- e.g. the DVC (Divide and Conquer) approach.

As is the case with other patterns, because of its poer and
generality, it should be used only when there are no other, more
direct and efficient ways to solve a given problem.

For detailed code see:

http://www.biglist.com/lists/xsl-list/archives/200402/msg00866.html


Cheers,

Dimitre Novatchev.


On Thu, 12 Aug 2004 12:32:35 +0200, Xavier Boully
<xavier.boully@xxxxxxxxxxxxxxxx> wrote:
> I would like to use recursivity through the source document with XSLT 1.0
> and no extension.
> 
> As far as I understood, when I am at a node level, I have a context that I
> can pass to children level using with-param.
> But what I would like to obtain is to catch things from children treatment
> to influence the context of the node level: when I pass context to a certain
> child I would like to take in account things that happened before while
> processing children I met before (in order of source document for example).
> 
> Reading again that question make me think that it is maybe not clear enough.
> Let's try an example.
> - Suppose that in source tree we have some <to-copy-element /> elements
> - Suppose that I just want my XSLTransformation to copy to the result tree
> the <to-copy-element /> from the source tree.
> - Suppose that I add a condition that I must not copy more than 10
> <to-copy-element />. In other words I want to copy only the first (in order
> of source document) 10 <to-copy-element /> elements or all the
> <to-copy-element /> elements if count(//to-copy-element)<11.
> 
> I think (but this is maybe a wrong hypothesis) that at a given node level, I
> have to pass to a child information about the number of copies done with
> children processed before.
> 
> Any ideas ?
> 
> Xavier

Current Thread