strc-xml.mkiv / last modification: 2020-01-30 14:16
%D \module
%D   [       file=strc-xml,
%D        version=2008.10.20,
%D          title=\CONTEXT\ Structure Macros,
%D       subtitle=XML Processing,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Structure Macros / XML Processing}

% This might disappear.

\unprotect

\startxmlsetups xml:ctx:internal:setup
    \xmlsetsetup{#1}{ctx:genericentry} {xml:ctx:genericentry}
    \xmlsetsetup{#1}{ctx:sectionentry} {xml:ctx:sectionentry}
    \xmlsetsetup{#1}{ctx:registerentry}{xml:ctx:registerentry}
\stopxmlsetups

\xmlregistersetup{xml:ctx:internal:setup}

\startxmlsetups xml:ctx:genericentry
    \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:ctx:sectionentry
    \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:ctx:registerentry
    \xmlflush{#1}
\stopxmlsetups

\protect \endinput

% test.xml

<?xml version='1.0' standalone='yes?>

<document>
  <section>
    <title>Some <b>bold</b> title <b>bold <i>bold</i> oeps</b> and more</title>
    <content>
      <p>a paragraph of text</p>
      <p>another paragraph of text</p>
    </content>
  </section>
  <section>
    <title>Another <b>bold</b> title <b>bold <i>bold</i> oeps</b> and more</title>
    <content>
      <p>a paragraph of text</p>
      <p>another paragraph of text</p>
    </content>
  </section>
</document>

% test.tex

\setuphead[chapter][expansion=xml]

\startxmlsetups xml:demo:define:base
    \xmlsetsetup{demo}{document|section|p|b|i}{xml:demo:*}
\stopxmlsetups

\xmlregisterdocumentsetup{demo}{xml:demo:define:base}

\startxmlsetups xml:demo:document
    \title{Contents}
    \placelist[chapter]
    \page
    \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:demo:section
    \chapter{\xmltext{#1}{/title}}
    \xmlfirst{#1}{/content}
\stopxmlsetups

\startxmlsetups xml:demo:p
    \xmlflush{#1}\endgraf
\stopxmlsetups

\startxmlsetups xml:demo:b
    \bgroup\bf\xmlflush{#1}\egroup
\stopxmlsetups

\startxmlsetups xml:demo:i
    \bgroup\it\xmlflush{#1}\egroup
\stopxmlsetups

\starttext
    \xmlprocessfile{demo}{oeps.xml}{}
\stoptext

% example by thomas:

\startbuffer[test]
<auth>
  <section>
  <title><emph>MyTitle</emph></title>
    <content>
     Hello world
   </content>
  </section>
</auth>
\stopbuffer

\startxmlsetups xml:mysetups
    \xmlsetsetup{\xmldocument}{auth|section|title|content|emph}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:mysetups}

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

\startxmlsetups xml:section
    \xmlflush{#1}\par \midaligned{\hl[5]}
\stopxmlsetups

\startxmlsetups xml:title
    \section{\xmlflush{#1}}
\stopxmlsetups

\startxmlsetups xml:content
    \xmlflush{#1}\par
\stopxmlsetups

\startxmlsetups xml:emph
    {\bgroup\em \xmlflush{#1}\egroup}
\stopxmlsetups

\setuphead
  [section]
  [style=normal,number=no,expansion=yes,page=yes]

\starttext
  \xmlprocessbuffer{main}{test}{}
\stoptext