%D \module
%D   [       file=publ-xml,
%D        version=2013.12.24,
%D          title=\CONTEXT\ Publication Support,
%D       subtitle=XML,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Publication Support / XML}

\unprotect

\permanent\tolerant\protected\def\convertbtxdatasettoxml[#1]%
  {\clf_convertbtxdatasettoxml{\ifparameter#1\or#1\else\s!default\fi}} % or current when not empty

% \startxmlsetups btx:initialize
%     \xmlregistereddocumentsetups{#1}{}
%     \xmlsetsetup{#1}{bibtex|entry|field}{btx:*}
%     \xmlmain{#1}
% \stopxmlsetups

\startxmlsetups btx:initialize
    \xmlsetsetup{#1}{bibtex|entry|field}{btx:*}
    \xmlmain{#1}
\stopxmlsetups

% \startxmlsetups btx:entry
%     \xmlflush{#1}
% \stopxmlsetups

\startxmlsetups btx:field
    \xmlflushcontext{#1}
\stopxmlsetups

\protect \endinput

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

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

% \bgroup
%     \setups[bibtex-commands]
%     \getbuffer
% \egroup

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

% \startpacked
% \getbuffer
% \stoppacked


% \protected\def\btx_xml_list_handle_entry
%   {\begingroup
%    \ignorespaces
%    \xmlfilter{btx:\currentbtxrendering}{/bibtex/entry[@tag='\currentbtxtag']/command(btx:format)}%
%    \removeunwantedspaces
%    \endgroup}

% \startxmlsetups btx:format
%     \btxlistparameter\c!before\relax % prevents lookahead
%     \edef\currentbibxmlnode {#1}
%     \edef\currentbibxmltag  {\xmlatt{#1}{tag}}
%     \edef\currentbtxcategory{\xmlatt{#1}{category}}
%     \ignorespaces
%     \xmlcommand{#1}{.}{btx:\currentbtxformat:\currentbibxmlcategory}
%     \removeunwantedspaces
%     \btxlistparameter\c!after\relax % prevents lookahead
% \stopxmlsetups

% \startxmlsetups btx:list
%     \xmlfilter{#1}{/bibtex/entry/command(bibtex:format)}
% \stopxmlsetups

% \startxmlsetups btx:btx
%     \xmlfilter{#1}{/entry/command(btx:format)}
% \stopxmlsetups

% \protected\def\btx_xml_doifelse#1{\xmldoifelse\currentbibxmlnode{/field[@name='#1']}}
% \protected\def\btx_xml_doif    #1{\xmldoif    \currentbibxmlnode{/field[@name='#1']}}
% \protected\def\btx_xml_doifnot #1{\xmldoifnot \currentbibxmlnode{/field[@name='#1']}}
%           \def\btx_xml_flush   #1{\xmlcontext \currentbibxmlnode{/field[@name='#1']}}
%           \def\btx_xml_setup     {\xmlsetup   \currentbibxmlnode} % {#1}
% \protected\def\btx_xml_todo    #1{[#1]}

% \xmlfilter{#1}{/field[@name='\currentbtxfield']/btxconcat('\currentbtxfield')}
