Hans Hagen wrote:

a more mkiv-ish approach is:

As even I don't quite understand this: could you or someone else
perhaps illuminate this code with explanations? It would make
an interesting article/wiki page, I think.

Best wishes,
Taco

\starttext

% <bibtex>
%   <entry tag="hagen:tb19-3-311" category="article">
%     <field name="number">3</field>
%     <field name="bibdate">Fri Jul 13 10:24:20 MDT 2007</field>
%     <field name="author">Hans Hagen</field>
%     <field name="journal">TUGboat</field>
% <field name="title">{Visual Debugging in \TeX, Part 1: The Story}</field>
%     <field name="ISSN">0896-3207</field>
%     <field name="year">1998</field>
%     <field name="pages">311--317</field>
%     <field name="volume">19</field>
%   </entry>
% </bibtex>


\def\MF  {MF}
\def\MP  {MP}
\def\TUB {TUGboat}
\def\Mc  {Mac}
\def\sltt{\tt}
\let\acro\firstofoneargument

\usemodule[abr-01]

\definebibtexsession [somebibtex]

\registerbibtexfile [somebibtex] [tugboat.bib]
\registerbibtexfile [somebibtex] [komoedie.bib]

\preparebibtexsession [somebibtex] % [convert]

\startxmlsetups bibtex:one
  \starttabulate[|Bl|p|]
  \NC tag   \NC \xmlatt{#1}{tag} \NC\NR
  \NC author\NC \xmlfilter{#1}{/fie...@name='author']/context()} \NC\NR
  \NC title \NC \xmlfilter{#1}{/fie...@name='title' ]/context()} \NC\NR
  \stoptabulate
\stopxmlsetups

\startxmlsetups bibtex:bibtex
    \xmlfilter{#1}{
        /ent...@category='article']
        /fie...@name='author' and (find(text(),'Hans Hagen')
            or find(text(),'Taco Hoekwater'))]
        /../command(bibtex:one)
    }
\stopxmlsetups

\applytobibtexsession[somebibtex][bibtex]

\page

\startxmlsetups bibtex:entry:getkeys
    \xmladdsortentry{bibtex}{#1}
        {\xmlfilter{#1}{/fie...@name='author']/text()}}
    \xmladdsortentry{bibtex}{#1}
        {\xmlfilter{#1}{/fie...@name='year'  ]/text()}}
    \xmladdsortentry{bibtex}{#1}
        {\xmlatt{#1}{tag}}
\stopxmlsetups

\startxmlsetups xml:bibtex:sorter
    \xmlresetsorter{bibtex}
  % \xmlfilter{#1}{entry/command(bibtex:entry:getkeys)}
    \xmlfilter{#1}{
        bibtex
        /ent...@category='article']
        /fie...@name='author' and find(text(),'Knuth')]
        /../command(bibtex:entry:getkeys)}
    \xmlsortentries{bibtex}
    \xmlflushsorter{bibtex}{bibtex:entry:flush}
\stopxmlsetups

\startxmlsetups bibtex:entry:flush
    \xmlfilter{#1}{/fie...@name='author']/context()} / %
    \xmlfilter{#1}{/fie...@name='year'  ]/context()} / %
    \xmlatt{#1}{tag}\par
\stopxmlsetups

\xmlsetup{bibtex:somebibtex}{xml:bibtex:sorter}

\stoptext


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
    tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to