Command/xmlinclude

Unofficial ConTeXt Wiki mirror

Last modified: 2020-08-29

Syntax

\xmlinclude{...}{...}{...}
{...} xmldata, usually main
{...} pattern that matches tags that stand for 'include external file'. Default: include
{...} names of attribute containing URL of file to include, separated by pipes. Default: href

Description

\xmlinclude{main}{include}{filename|href|name} merges XML trees in external files into the tree called main. External files are merged in at every include tag; which file to merge in is determined by looking at the filename attribute; if that is absent the href and name attributes are tried in order.

Further behaviour:

\ctxlxml{include("main","include","filename|href",false)} % false means no recursion

Example

Here is an example how to use \xmlinclude to combine several xml files into one document. The xml files represent single chapters of a book project. Their structure is:

<chapter title="Chapter 1">
  <content>
    Text of chapter
  </content>
</chapter>

Then, one master file combines all these into one structure via the xi:include element [1]:

<document>
  <xi:include href="chapter_1.xml"/>
  <xi:include href="chapter_2.xml"/>
</document> 

And finally, you process this with a master tex file:

\startxmlsetups xml:setups
    \xmlinclude{#1}{xi:include}{href}
    \xmlsetsetup{#1}{document|chapter}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:setups}

\startxmlsetups xml:document
    \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:chapter
    \startchapter[title=\xmlatt{#1}{title}]
        \xmlall{#1}{content}
    \stopchapter
\stopxmlsetups

\starttext

    \xmlprocessfile{main}{master.xml}{}

\stoptext 

See also

Help from ConTeXt-Mailinglist/Forum

All issues with: