Hi Jano, It's not clear to me what you want to measure when but here is a weekend playground (you're locked down anyway). \def\MacroJano#1% {\writestatus{JANO}{ONE} \setbox0=\hbox\bgroup\xmlflush{#1}\egroup} \startluacode function document.FunctionJano(id) context.writestatus("JANO","ZERO") token.expand_macro("MacroJano",true,id) context("%p",tex.box[0].width) context.writestatus("JANO","TWO") end \stopluacode \startbuffer[doc] <?xml version "1.0"?> <document> <section>one</section> <section>one two</section> <section>one two three</section> </document> \stopbuffer \startxmlsetups xml:name \xmlsetsetup{#1}{*}{xml:*} \stopxmlsetups \xmlregistersetup{xml:name} \startxmlsetups xml:section width: \ctxlua{document.FunctionJano("#1")}\par \stopxmlsetups \startxmlsetups xml:document \xmlflush{#1} \stopxmlsetups \starttext \xmlprocessbuffer{xml:name}{doc}{} \stoptext A clue: token.expand_macro will kind of 'run a local tex job'. If this works for you. you know the price you have to pay ... wikify Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------