; $Id: sxml-utils.scm,v 1.1 2006/03/02 04:32:58 olpa Exp $; A copy-paste of a part of the SXML library; from CVS: SSAX/lib/SXML-tree-trans.scm(define(pre-post-ordertreebindings)(let*((default-binding(assq'*default*bindings))(text-binding(or(assq'*text*bindings)default-binding))(text-handler; Cache default and text bindings(andtext-binding(if(procedure?(cdrtext-binding))(cdrtext-binding)(cddrtext-binding)))))(letloop((treetree))(cond((null?tree)'())((not(pair?tree))(let((trigger'*text*))(iftext-handler(text-handlertriggertree)(error"Unknown binding for "trigger" and no default"))))((not(symbol?(cartree)))(maplooptree)); tree is a nodelist(else; tree is an SXML node(let*((trigger(cartree))(binding(or(assqtriggerbindings)default-binding)))(cond((notbinding)(error"Unknown binding for "trigger" and no default"))((not(pair?(cdrbinding))); must be a procedure: handler(apply(cdrbinding)trigger(maploop(cdrtree))))((eq?'*preorder*(cadrbinding))(apply(cddrbinding)tree))((eq?'*macro*(cadrbinding))(loop(apply(cddrbinding)tree)))(else; (cadr binding) is a local binding(apply(cddrbinding)trigger(pre-post-order(cdrtree)(append(cadrbinding)bindings)))))))))))