ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Wolfgang Schuster <schuster.wolfgang@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: xml, language, btx problems
Date: Sun, 17 Jun 2018 22:36:39 +0200	[thread overview]
Message-ID: <5B26C657.3070108@gmail.com> (raw)
In-Reply-To: <3051e56b-49cd-84f7-e8ad-bd6927ebf343@uni-bonn.de>


[-- Attachment #1.1: Type: text/plain, Size: 5262 bytes --]

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]
<document language="de">
    test
</document>
\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 <mailto:thomas.schmitz@uni-bonn.de>
> 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:
>
> <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
> ___________________________________________________________________________________
> Pablo Rodriguez <mailto:oinos@gmx.es>
> 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 <mailto:thomas.schmitz@uni-bonn.de>
> 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]
> <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
> ___________________________________________________________________________________


[-- Attachment #1.2: Type: text/html, Size: 9101 bytes --]

[-- Attachment #2: Type: text/plain, Size: 492 bytes --]

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

  reply	other threads:[~2018-06-17 20:36 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-17 17:52 Thomas A. Schmitz
2018-06-17 19:37 ` Pablo Rodriguez
2018-06-17 20:10   ` Thomas A. Schmitz
2018-06-17 20:36     ` Wolfgang Schuster [this message]
2018-06-18 16:36     ` Pablo Rodriguez
2018-06-17 22:58 ` Alan Braslau
2018-06-18 10:19   ` Thomas A. Schmitz
2018-06-18 10:53     ` Hans Hagen
2018-06-18 11:07       ` Thomas A. Schmitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5B26C657.3070108@gmail.com \
    --to=schuster.wolfgang@gmail.com \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).