One option is to load your document at the beginning with different setups where you only process the language information. Another option is to put the language dependent options in a setups block and load them when you process the XML file. \startbuffer[test] test \stopbuffer \startxmlsetups [xml:testsetups] \xmlsetsetup{\xmldocument}{document}{xml:*} \stopxmlsetups \xmlregistersetup{xml:testsetups} \startxmlsetups [xml:document] \mainlanguage[\xmlatt{#1}{language}] \startdocument \xmlflush{#1} \stopdocument \stopxmlsetups % The “document:start” setup is used by default with % the before key of the \startdocument command \startsetups [document:start] \startmodeset [**de] {This document is in german.\par} [**en] {This document is in english.\par} [default] {This document uses the default language.\par} \stopmodeset \stopsetups \starttext \xmlprocessbuffer{main}{test}{} \stoptext Wolfgang > Thomas A. Schmitz > 17. Juni 2018 um 19:52 > Hi, > > I have a conceptual problem integrating btx into my xml workflow. > There are too many files involved, so no minimal example, but a > minimal description. Root of my xml document: > > > ... > > > I have two files with btx definitions: > > publ-imp-deutsch.mkvi > > publ-imp-english.mkvi > > Loading one of these two should depend on the main language: > > \doifelse {\currentlanguage} {en} > {\usebtxdefinitions [english]} > {\usebtxdefinitions [deutsch]} > > My problem: the main language is set within the processing rules for > the root of my xml document: > > \startxmlsetups xml:document > \mainlanguage[\xmlatt{#1}{language}] > \stopxmlsetups > > However, this implies a \starttext. And the btxdefinitions need to be > loaded before \starttext, or so it seems. Which means: the processing > rules for \usebtxdefinitions need to be set outside of the xml setups. > But at this moment, the main language is not set yet, and the > \doifelse fails. Any hints how to get out of this conundrum? > > Thanks, and all best > > Thomas > ___________________________________________________________________________________ > > 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://context.aanhet.net > archive : https://bitbucket.org/phg/context-mirror/commits/ > wiki : http://contextgarden.net > ___________________________________________________________________________________ > Pablo Rodriguez > 17. Juni 2018 um 21:37 > > Hi Thomas, > > this may work in your case: > > \startxmlsetups xml:document > \mainlanguage[\xmlatt{#1}{language}] > \doifmodeelse{**en} > {\usebtxdefinitions [english]} > {\usebtxdefinitions [deutsch]} > \stopxmlsetups > > I have just checked in with another document and it worked as expected. > > Of course, "\doifelse{\currentmainlanguage}{en}" also works fine for me. > > I hope it helps, > > Pablo > Thomas A. Schmitz > 17. Juni 2018 um 22:10 > > > Thank you for your suggestion, Pablo, but this is just a slightly > different syntax to express the same test, this doesn't change > anything. Maybe this document is clearer in explaining my problem (and > results are identical with the \doifmodeelse syntax): > > \startbuffer[test] > > test > > \stopbuffer > > \startxmlsetups xml:testsetups > \xmlsetsetup{\xmldocument}{document}{xml:*} > \stopxmlsetups > > \xmlregistersetup{xml:testsetups} > > \startxmlsetups xml:document > \mainlanguage[\xmlatt{#1}{language}] > Language settings work correctly here: > > \doifelse {\currentmainlanguage} {de} > {\color [blue] {Deutsch}} > {\color [red] {English}}\par > \xmlflush{#1} > \stopxmlsetups > > \starttext > This is where the btx set has to be loaded, and language settings do > not work as needed: > > \doifelse {\currentmainlanguage} {de} > {\color [blue] {Deutsch}} > {\color [red] {English}}\par > > \xmlprocessbuffer{main}{test}{} > > \stoptext > > Is there any way to set the language before the element is > processed? I experimented with this > > \startxmlsetups xml:language:initiate > \mainlanguage[\xmlattribute{\xmldocument}{root::/document}{language}] > \stopxmlsetups > > \xmlbeforedocumentsetup{\xmldocument}{xml:language:initiate}{xml:testsetups} > > > but this doesn't work, and I'm not sure I'm using it the right way. > > All best > > Thomas > ___________________________________________________________________________________ > > 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://context.aanhet.net > archive : https://bitbucket.org/phg/context-mirror/commits/ > wiki : http://contextgarden.net > ___________________________________________________________________________________