XIncludes, was: Re: [Petal] Petal 0.80 released

Jean-Michel Hiver jhiver at mkdoc.com
Mon Jan 27 17:19:37 GMT 2003


> > Problem is that Petal is absolutely fine with recursive includes. So
> > maybe if we were to implement XIncludes we should ignore that bit of the
> > specification.
> 
> My reading of that spec says that the processor should abort if it
> goes into a loop condition. This seems like the proper behavior as I
> cannot envision a situation where recursive includes could be anything
> but an infinite loop.
> 
> Doc A ---> Doc B ---> Doc C ---> Doc B ---> Doc C ---> Doc B .....

That's because you're used to looping through SQL results rather than
traversing tree-like structures I think :)


Consider the following pseudo-code:

  DISPLAY_RECURSE (node) :
    print_node (node)
    if (node.children.length > 0)
       indent
       for each node in node.children
         DISPLAY_RECURSE (node)
       end-for
       unindent
    end-if
    

Well, with Petal it's possible :-) Look:

  <!--? file display-recurse.html --> 
  <li>
    <span petal:replace="node/title" />
  
    <ul petal:define="children node/children"
        petal:condition="children"
        petal:repeat="node children">

      <xi:include file="display-recurse.html" />
      
    </ul>
  </li>


Here the big trick is basically the petal:condition="children" statement
which will continue including until a certain condition is met (here,
the node has no children).


I hope this makes sense for everybody.
Best Regards,
-- 
Building a better web - http://www.mkdoc.com/
---------------------------------------------
Jean-Michel Hiver
jhiver at mkdoc.com  - +44 (0)114 255 8097
Homepage: http://www.webmatrix.net/



More information about the Petal mailing list