I know this is a FAQ, but I haven't found the question completely answered anywhere yet. I'm trying to generate a 2-level <dtml-tree> from a pair of SQL tables. I've read anthony's "Some Neat Tricks with dtml-tree" which suggests (with a single table) using a query that returns the children for the specified parent in branches_expr. I've extrapolated from this to make branches_expr a Python script that should query the appropriate table depending if we are trying to draw the children of the root, or their children: if int(parentId) == 0: return container.query.treeCategories() elif int(parentId) > 0: return container.query.treeSubCategories(category=(int(parentId)) (2 tables, category and subcategory) Both queries return 'id' and 'name' fields, where id is unique among sibling nodes (it's a primary key from the tables). However anthony's page mentions a missing 'tpId' attribute, but stops before explaining how to set this, or to spoof it. My tree expands very strangely - expanded branches always contain the top level Categories recursively, not the subcategories. I also saw Tino Wildenhain's posting http://mail.zope.org/pipermail/zope/2000-June/111642.html where he mentioned offsetting the ids to guarantee uniqueness. I thought this might mean all ids have to be unique in the entire tree, so I employed a similar strategy, but it hasn't got me anywhere yet. Can anyone explain how it should be done, or point me to a good example? Thanks in advance Will -- Will Stephenson