Pardon the subject title - it was either that or the alternative "lost in DTML land" ... I'm using nested <dtml-in> blocks to descend two levels into a portion of my ZODB. I'm only interested in the leaf nodes. However, rather than act on them while "visiting", I want to conditionally store a reference to them in a python list so that I can visit any leaf later on. I'll make it clear with a pared-down example. root folder1 subfolder1a subfolder1b folder2 subfolder2a I want to build a list such that I can visit various subfolders without having to search them out. Q1) If I want to be able to visit subfolder1a and subfolder2a from the root, do I need to store the entire path or will some sort of internal ZODB id suffice? Q2) Assuming I need the entire path, I've toyed around with creating a list mylist = [(folder1,subfolder1a),(folder2,subfolder2a)] for which I could presumably then visit the subfolders via <dtml-in mylist><dtml-with "_[sequence-item][0]"> <dtml-with "_[sequence-item][1]"> .... </dtml-with> </dtml-with></dtml-in> I'm having trouble creating this list, my attempt being the root-level DTML snippet: <dtml-in "objectValues(['Folder'])"> <dtml-let level1id=id> <dtml-in "objectValues(['Folder'])"> <dtml-let curloc="(level1id,id)"> <dtml-call "mylist.append(curloc)"> (conditionally called) </dtml-let> </dtml-in> </dtml-let> </dtml-in> In my actual problem, I'm building up multiple lists during this single pass of the tree. These lists can then be used later on by other DTML methods. I would very much appreciate feedback on the above. Cheers, Darran.