Passing the name of an XML file to process via the command line

Hello list. I feel this should be an easy question to answer but I couldn't find a hint. I have a ConTeXt file which pulls in an XML file for processing using the command \xmlprocessfile{mydomain}{myXMLfile.xml}{} I would like instead to call context with the XML file name in the command line (so that I can use the same ConTeXt setups on multiple XML sources). How can I do that? Many thanks. Duncan

Am 30.06.2025 um 17:59 schrieb Duncan Hothersall:
Hello list. I feel this should be an easy question to answer but I couldn't find a hint.
I have a ConTeXt file which pulls in an XML file for processing using the command
\xmlprocessfile{mydomain}{myXMLfile.xml}{}
I would like instead to call context with the XML file name in the command line (so that I can use the same ConTeXt setups on multiple XML sources).
How can I do that?
\xmlprocessfile{...}{\inputfilename}{} and process it with context --environment=mytexfile myxmlfile.xml Wolfgang

Thanks both. I stripped out the \starttext \xmlprocessfile ... \stoptext from my tex file and just used the command line invocation as suggested and it worked perfectly. So I've learned two things for the price of one! Thanks again. Duncan On Mon, 30 Jun 2025 at 17:34, Denis Maier via ntg-context < ntg-context@ntg.nl> wrote:
Do you actually need \xmlprocessfile{...}{\inputfilename}{} ?
I just use context --environment=mytexfile myxmlfile.xml and it works just fine.
Wolfgang Schuster
hat am 30.06.2025 18:21 CEST geschrieben: Am 30.06.2025 um 17:59 schrieb Duncan Hothersall:
Hello list. I feel this should be an easy question to answer but I couldn't find a hint.
I have a ConTeXt file which pulls in an XML file for processing using the command
\xmlprocessfile{mydomain}{myXMLfile.xml}{}
I would like instead to call context with the XML file name in the command line (so that I can use the same ConTeXt setups on multiple XML sources).
How can I do that?
\xmlprocessfile{...}{\inputfilename}{}
and process it with
context --environment=mytexfile myxmlfile.xml
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net
___________________________________________________________________________________

Just coming back to this to say after further testing, for anyone copying
in future, actually you can lose some of your setups if you just strip the
\starttext \xmlprocessfile ... \stoptext from the environment file
completely. Wolfgang's original recipe solves that problem.
On Mon, 30 Jun 2025 at 19:51, Duncan Hothersall
Thanks both. I stripped out the \starttext \xmlprocessfile ... \stoptext from my tex file and just used the command line invocation as suggested and it worked perfectly. So I've learned two things for the price of one!
Thanks again.
Duncan
On Mon, 30 Jun 2025 at 17:34, Denis Maier via ntg-context < ntg-context@ntg.nl> wrote:
Do you actually need \xmlprocessfile{...}{\inputfilename}{} ?
I just use context --environment=mytexfile myxmlfile.xml and it works just fine.
Wolfgang Schuster
hat am 30.06.2025 18:21 CEST geschrieben: Am 30.06.2025 um 17:59 schrieb Duncan Hothersall:
Hello list. I feel this should be an easy question to answer but I couldn't find a hint.
I have a ConTeXt file which pulls in an XML file for processing using the command
\xmlprocessfile{mydomain}{myXMLfile.xml}{}
I would like instead to call context with the XML file name in the command line (so that I can use the same ConTeXt setups on multiple XML sources).
How can I do that?
\xmlprocessfile{...}{\inputfilename}{}
and process it with
context --environment=mytexfile myxmlfile.xml
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___________________________________________________________________________________
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net
___________________________________________________________________________________

What do you mean by this?
Von: Duncan Hothersall

I had tested using a MWE but in reality I have a rather involved set of XML
setups with some lua code inclusions and multi-language handling bits and
when I ran that as an environment without the explicit
\starttext \xmlprocessfile{...}{\inputfilename}{} \stoptext, while some
parts did work (fonts, colours, language switches) some of the page layout
information was lost. When I added the
\starttext \xmlprocessfile{...}{\inputfilename}{} \stoptext back in, it
worked properly.
I'm not sure exactly which bits "fell out" but something definitely did.
But the explicit calling as above fixed it.
Duncan
On Thu, 3 Jul 2025 at 10:46,
What do you mean by this?
*Von:* Duncan Hothersall
*Gesendet:* Donnerstag, 3. Juli 2025 10:50 *An:* mailing list for ConTeXt users *Betreff:* [NTG-context] Re: Passing the name of an XML file to process via the command line Just coming back to this to say after further testing, for anyone copying in future, actually you can lose some of your setups if you just strip the \starttext \xmlprocessfile ... \stoptext from the environment file completely. Wolfgang's original recipe solves that problem.
On Mon, 30 Jun 2025 at 19:51, Duncan Hothersall
wrote: Thanks both. I stripped out the \starttext \xmlprocessfile ... \stoptext from my tex file and just used the command line invocation as suggested and it worked perfectly. So I've learned two things for the price of one!
Thanks again.
Duncan
On Mon, 30 Jun 2025 at 17:34, Denis Maier via ntg-context < ntg-context@ntg.nl> wrote:
Do you actually need
\xmlprocessfile{...}{\inputfilename}{}
?
I just use
context --environment=mytexfile myxmlfile.xml
and it works just fine.
Wolfgang Schuster
hat am 30.06.2025 18:21 CEST geschrieben: Am 30.06.2025 um 17:59 schrieb Duncan Hothersall:
Hello list. I feel this should be an easy question to answer but I
couldn't find a hint.
I have a ConTeXt file which pulls in an XML file for processing using
the command
\xmlprocessfile{mydomain}{myXMLfile.xml}{}
I would like instead to call context with the XML file name in the
command line (so that I can use the same ConTeXt setups on multiple XML
sources).
How can I do that?
\xmlprocessfile{...}{\inputfilename}{}
and process it with
context --environment=mytexfile myxmlfile.xml
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net
___________________________________________________________________________________

Well, in that case it might depend on the exact file. I have to admit I’ve never stumpled upon something similar, and more setups are also not trivial.
But maybe something to consider: in my xmlsetups I match against some node from the xml document (maybe the root or maybe a body – it depends on the source document structure of course) and translate that into a proper starttext…stoptext structure.
Also, I usually split my setups in at least two files: one deals with the structure, the other with layout information.
So: context myfile.xml --environments=styles,mapping
mapping.tex will contain all the information to build a valid context document from the xml source (that means including \starttext … \stoptext etc.)
styles.tex will deal with fonts, page setups etc.
Also consider this older thread and Wolfgang’s response there: https://lists.contextgarden.net/archives/list/ntg-context@ntg.nl/thread/ZLEP...
Best,
Denis
Von: Duncan Hothersall

Ah, yes, that makes sense. I'm only slowly shifting my brain to the
paradigm of processing XML directly using ConTeXt - for many years I've
used other languages to pre-process XML into TeX and then process that
using ConTeXt, and the flexibility that that gives is enormous, but it also
creates a complexity that I am keen to engineer out. But all of what I've
built so far has been based on examples (many of which turn out to be out
of date) and snippets I've found, so I guess that's why I ended up with the
structure I have.
Many thanks for the additional pointers, much appreciated.
Duncan
On Thu, 3 Jul 2025 at 11:36,
Well, in that case it might depend on the exact file. I have to admit I’ve never stumpled upon something similar, and more setups are also not trivial.
But maybe something to consider: in my xmlsetups I match against some node from the xml document (maybe the root or maybe a body – it depends on the source document structure of course) and translate that into a proper starttext…stoptext structure.
Also, I usually split my setups in at least two files: one deals with the structure, the other with layout information.
So: context myfile.xml --environments=styles,mapping
mapping.tex will contain all the information to build a valid context document from the xml source (that means including \starttext … \stoptext etc.)
styles.tex will deal with fonts, page setups etc.
Also consider this older thread and Wolfgang’s response there: https://lists.contextgarden.net/archives/list/ntg-context@ntg.nl/thread/ZLEP...
Best,
Denis
*Von:* Duncan Hothersall
*Gesendet:* Donnerstag, 3. Juli 2025 11:55 *An:* denismaier@mailbox.org *Cc:* mailing list for ConTeXt users *Betreff:* Re: [NTG-context] Re: Passing the name of an XML file to process via the command line I had tested using a MWE but in reality I have a rather involved set of XML setups with some lua code inclusions and multi-language handling bits and when I ran that as an environment without the explicit \starttext \xmlprocessfile{...}{\inputfilename}{} \stoptext, while some parts did work (fonts, colours, language switches) some of the page layout information was lost. When I added the \starttext \xmlprocessfile{...}{\inputfilename}{} \stoptext back in, it worked properly.
I'm not sure exactly which bits "fell out" but something definitely did. But the explicit calling as above fixed it.
Duncan
On Thu, 3 Jul 2025 at 10:46,
wrote: What do you mean by this?
*Von:* Duncan Hothersall
*Gesendet:* Donnerstag, 3. Juli 2025 10:50 *An:* mailing list for ConTeXt users *Betreff:* [NTG-context] Re: Passing the name of an XML file to process via the command line Just coming back to this to say after further testing, for anyone copying in future, actually you can lose some of your setups if you just strip the \starttext \xmlprocessfile ... \stoptext from the environment file completely. Wolfgang's original recipe solves that problem.
On Mon, 30 Jun 2025 at 19:51, Duncan Hothersall
wrote: Thanks both. I stripped out the \starttext \xmlprocessfile ... \stoptext from my tex file and just used the command line invocation as suggested and it worked perfectly. So I've learned two things for the price of one!
Thanks again.
Duncan
On Mon, 30 Jun 2025 at 17:34, Denis Maier via ntg-context < ntg-context@ntg.nl> wrote:
Do you actually need
\xmlprocessfile{...}{\inputfilename}{}
?
I just use
context --environment=mytexfile myxmlfile.xml
and it works just fine.
Wolfgang Schuster
hat am 30.06.2025 18:21 CEST geschrieben: Am 30.06.2025 um 17:59 schrieb Duncan Hothersall:
Hello list. I feel this should be an easy question to answer but I
couldn't find a hint.
I have a ConTeXt file which pulls in an XML file for processing using
the command
\xmlprocessfile{mydomain}{myXMLfile.xml}{}
I would like instead to call context with the XML file name in the
command line (so that I can use the same ConTeXt setups on multiple XML
sources).
How can I do that?
\xmlprocessfile{...}{\inputfilename}{}
and process it with
context --environment=mytexfile myxmlfile.xml
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net
___________________________________________________________________________________

Not sure if this may be of interest to you: it is also relatively easy to do part of the processing and typesetting in Lua. If you have your environment file environment.tex, just include the line \registerctxluafile{environment}{1.001} and you can define your commands in lua (I wrote a page on the wiki about it). I find some tests and transformations way easier to do in Lua than in TeX, especially if you want to do more than just typeset the xml serially. All best Thomas On 7/3/25 12:45 PM, Duncan Hothersall wrote:
Ah, yes, that makes sense. I'm only slowly shifting my brain to the paradigm of processing XML directly using ConTeXt - for many years I've used other languages to pre-process XML into TeX and then process that using ConTeXt, and the flexibility that that gives is enormous, but it also creates a complexity that I am keen to engineer out. But all of what I've built so far has been based on examples (many of which turn out to be out of date) and snippets I've found, so I guess that's why I ended up with the structure I have.
Many thanks for the additional pointers, much appreciated.
Duncan

Yes, many thanks Thomas, I have actually written a table handler in lua and
a couple of other bits, and your wiki page is very helpful!
Cheers,
Duncan
On Thu, 3 Jul 2025 at 14:41, Thomas A. Schmitz
Not sure if this may be of interest to you: it is also relatively easy to do part of the processing and typesetting in Lua. If you have your environment file environment.tex, just include the line
\registerctxluafile{environment}{1.001}
and you can define your commands in lua (I wrote a page on the wiki about it). I find some tests and transformations way easier to do in Lua than in TeX, especially if you want to do more than just typeset the xml serially.
All best
Thomas
On 7/3/25 12:45 PM, Duncan Hothersall wrote:
Ah, yes, that makes sense. I'm only slowly shifting my brain to the paradigm of processing XML directly using ConTeXt - for many years I've used other languages to pre-process XML into TeX and then process that using ConTeXt, and the flexibility that that gives is enormous, but it also creates a complexity that I am keen to engineer out. But all of what I've built so far has been based on examples (many of which turn out to be out of date) and snippets I've found, so I guess that's why I ended up with the structure I have.
Many thanks for the additional pointers, much appreciated.
Duncan
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
participants (5)
-
Denis Maier
-
denismaier@mailbox.org
-
Duncan Hothersall
-
Thomas A. Schmitz
-
Wolfgang Schuster