xsl-list
[Top] [All Lists]

Re: recursivity and param

2004-08-12 04:53:05
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(_dot_)boully(_at_)ultra-fluide(_dot_)com> 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

--+------------------------------------------------------------------
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>
--+--




<Prev in Thread] Current Thread [Next in Thread>