Hi struggling again: Shouldn't the code below give me the last element under <tbody>? Right now \xmlfilter{#1}{/tr/last()/command(xml:table:tbody:tr)} gives me nothing... (Use case is that I want to have a frame above the table and one bar below. So I think I should wrap the last line in the \startxtablefoot ...\stopxtablefoot, i.e., I need one command for the last element, and one for the rest (Or is there a better way?). What would be the everything but the last? What am I missing? Thanks again, Denis ================== \setupxtable[frame=off,split=yes] \setupxtable[head][topframe=on,bottomframe=on] \setupxtable[body][] \setupxtable[foot][bottomframe=on] \startbuffer[test] <?xml version="1.0" encoding="utf-8" ?> <article> <table> <tbody> <tr> <td>5</td> <td>A</td> </tr> <tr> <td>7</td> <td>B</td> </tr> <tr> <td>2</td> <td>C</td> </tr> </tbody> </table> </article> \stopbuffer \startxmlsetups xml:test \xmlsetsetup{#1}{*}{-} \xmlsetsetup{#1}{article}{xml:*} \xmlsetsetup{#1}{table}{xml:table} \stopxmlsetups \xmlregistersetup{xml:test} \startxmlsetups xml:article \starttext \xmlflush{#1} \stoptext \stopxmlsetups \startxmlsetups xml:table \startembeddedxtable \xmlfilter{#1}{/tbody/command(xml:table:tbody)} \stopembeddedxtable \stopxmlsetups \startxmlsetups xml:table:tbody \xmlfilter{#1}{/tr/last()/command(xml:table:tbody:tr)} \stopxmlsetups \startxmlsetups xml:table:tbody:tr \startxrow \xmlfilter{#1}{/td/command(xml:table:tbody:tr:td)} \stopxrow \stopxmlsetups \startxmlsetups xml:table:tbody:tr:td \startxcell \xmlflush{#1} \stopxcell \stopxmlsetups \xmlprocessbuffer{test}{test}{} ==================