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
-------------------------------------------------------------------------

Reply via email to