Hi Simon,
Your problem can be solved in the following way: [i cc to teh list since it
may be instructive]
% output=pdftex
% This is the first pass: add an \bTD .. \eTD (or \bTH .. eTH) entry
\def\WhatAHackA#1%
{\defineXMLenvironmentsave[#1]
{\bTD#1\eTD\defineXMLignore[#1]}
\donothing}
% and this the second pass: actually typeset them
\def\WhatAHackB#1%
{\defineXMLpickup[#1]
\bTD
\eTD}
% here we do the two passes (one can add an additional pass
% over the <revision> element, or even better: store the
% entries, and flush them when needed skipping empty elements)
\defineXMLenvironmentsave[revhistory]
{\bgroup}
{\def\HackList{revnumber,date,revremark,authorinitials}
\defineXMLenvironment[revision] \donothing \donothing
\processcommacommand[\HackList]\WhatAHackA
\bTABLE
\bTR\XMLflush{revhistory}\eTR
\defineXMLpickup[revision] \bTR \eTR
\processcommacommand[\HackList]\WhatAHackB
\XMLflush{revhistory}
\eTABLE
\egroup}
% one could of course just name the \define...'s instead of a list, but the
list is better when there are 100 possible entries
%
% \defineXMLenvironmentsave[revnumber]....
% \defineXMLenvironmentsave[...]
btw, a not yet finished but handy option is tex namespaces, which permits
you to define element handlers at the outer level and swicht to a namespace
when flushing a saved element;
i also have a system for building elements in mem, but yet unfinished
% The example:
\starttext
\startXMLdata
<revhistory>
<revision>
<revnumber>0.06</revnumber>
<date>2001-01-08</date>
<authorinitials>gjf</authorinitials>
<revremark>
Changed date format (YYYY-MM-DD)
</revremark>
</revision>
</revhistory>
\stopXMLdata
\startXMLdata
<revhistory>
<revision>
<revnumber>0.06</revnumber>
<date>2001-01-08</date>
<revremark>
Changed date format (YYYY-MM-DD)
</revremark>
</revision>
</revhistory>
\stopXMLdata
\stoptext
At 10:05 PM 2/8/2002 +0100, you wrote:
>Hans,
>
>Hier nog een probleempje. De revhistory wil ik graag als een tabel
>weergeven. Maar er kunnen een groot aantal velden in voorkomen. Het
>liefst zou ik eerst kunnen kijken welke velden er voorkomen, en alleen
>die kolommen in de tabel opnemen. Dat is geen eenvoudige zaak, en
>vereist zeker meer dan ��n gang over de TeX file. Heb jij daar ideeen
>over?
>
><revhistory>
> <revision>
> <revnumber>0.06</revnumber>
> <date>2001-01-08</date>
> <authorinitials>gjf</authorinitials>
> <revremark>
> Changed date format (YYYY-MM-DD)
> </revremark>
> </revision>
>
> <!-- Additional (*earlier*) revision histories go here -->
></revhistory>
>
>% revision history
>% I would like to modify the layout
>% it would be nice if we could inspect the table first;
>% not all columns need to be present
>\defineXMLenvironment[revhistory]
> {\blank[medium]\bgroup\switchtobodyfont[small]
> \midaligned{Revision History}
> \midaligned\bgroup\bTABLE
> % column headers
> \bTR \bTD \bf Revision\eTD \bTD \bf Date\eTD \bTD \bf Remarks\eTD
> \eTR
> }
> {\eTABLE
> \egroup % end midaligned
> \egroup % end switchtobodyfont
> }
>\defineXMLpickup[revision] \bTR \eTR
>\defineXMLpickup[revnumber] \bTD \eTD
>\defineXMLpickup[date] \bTD \eTD
>\defineXMLpickup[revremark] \bTD \eTD
>
>Zoals het kommentaar al aangeeft heb ik ook geen goede dokumentatie
>kunnen vinden voor de \bTABLE ... \eTABLE konstruktie.
>
>Groeten, Simon
>
>--
>Simon Pepping
>email: [EMAIL PROTECTED]
-------------------------------------------------------------------------
Hans Hagen | PRAGMA ADE | [EMAIL PROTECTED]
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------
fall-back web server:
www.pragma-pod.nl
-------------------------------------------------------------------------