Command/xmlinclude

From ConTeXt wiki

\xmlinclude

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:

  • If no attribute is specified, href is assumed.
  • If the file is empty or not found, the inclusion tag is replaced with nothing.
  • Inclusion is recursive: if there are inclusion tags in the external tree you pull in, then they, in turn are acted on, too. If you do not want recursive inclusion, you must use the xml.include)) command directly, like so:
\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: