RE: Complex recursion in XSLT 1.0
Thanks Michael, so I was effectively building a stack in my first transform but it was a stack of individual filenames as individual text parameters. Perhaps if I build a stack as a node-set I might be able to crack this one! I read a little on Turin completeness on Wikipedia would share the following phrase: "Thus, a machine that can act as a universal Turing machine can, in principle, perform any calculation that any other computer is capable of. Note, however, that this says nothing about the effort required to write a program for the machine." Ain't that the truth! ;-) Richard -----Original Message----- From: Michael Kay [mailto:mike@xxxxxxxxxxxx] Sent: 18 February 2008 13:36 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: Complex recursion in XSLT 1.0 > Could you elucidate a little on the concept of a 'stack'. I can only > dream of such a thing. What mechanism would you use? > and... does that not sound like we need to have a list of all entries > first - is that another infinite loop? OK. You're processing A, and it contains <topic ref="X"/> <topic ref="Y"/> then when you make the call to process X, you pass it a $stack containing <topic ref="Y"/>. In X you find <topic ref="P"/> <topic ref="Q"/> so you make a recursive call to process P, passing it a $stack containing the previous $stack plus <topic ref="Q"/> When you've finished processing P, you select the last thing on the stack (which is Q), you process that, passing a stack from which Q has been removed. Then when you finish processing Q, you select the last thing on the stack (which is Y) and process that, passing a stack which is now empty. When you finish processing Y you are done. > > All these Catch 22's are piling up and I'm starting to think that this > is fundamentally impossible in XSLT 1.0 because we are not party to > essential information about what went before. It's absolutely not fundamentally impossible because XSLT is Turing-complete. I agree it might be a bit mind-bending when you're not used to this style of coding. One reason I published the knight's tour stylesheet in my XSLT Programmer's Reference was to convince people that problems like this could be solved. Michael Kay http://www.saxonica.com/
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format