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:
<document language="en">
...
</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
___________________________________________________________________________________
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
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]
<document language="de">
test
</document>
\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 <document>
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
___________________________________________________________________________________