[NTG-context] processing xml in mkiv

Thomas A. Schmitz thomas.schmitz at uni-bonn.de
Sun Mar 16 13:00:51 CET 2008


On Mar 16, 2008, at 12:04 PM, Wolfgang Schuster wrote:

> On Sun, 16 Mar 2008 11:29:49 +0100
> "Thomas A. Schmitz" <thomas.schmitz at uni-bonn.de> wrote:
>
>> Hi all,
>>
>> xml processing is about the last part of my ConTeXt stuff where I
>> haven't been able to switch to mkiv; I just can't get my head around
>> it... 2 questions:
>>
>> 1. When I try to process a xml-file with my old (mkii) environments,
>> the output looks OK, but I always get a first page with the xml
>> version declaration
>>
>> <?xml version="1.0" encoding="utf-8"?>
>>
>> Is this a bug or a feature? Is there anything I can do to prevent it?
>
> Can you post a example, I never saw such a effect in my test files.

Hi Wolfgang,

OK, here is a minimal example:

file test.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ELEMENT document   (section)>
<!ELEMENT section    (#PCDATA)>
]>

<document>
   <section title="First">
     <p>This is <quotation>an</quotation> xml file.</p>
   </section>
</document>

file testenvironment.tex

\usemodule[xtag-ent]

\defineXMLenvironment[document]
                      {\starttext}
                      {\stoptext}

\defineXMLenvironment[section]
  {\section{\XMLpar{section}{title}{}}}
  {}

\defineXMLenvironment[quotation]
                      {\quotation\bgroup}
                      {\egroup}


When I process with mkii, I get the expected output. Processing with

texexec --lua --env=testenvironment test.xml

gives me the first line (here it's not an entire page) I described!

>
>
>> 2. I'm really lost with the new xml mechanism. My first problem: In a
>> message from September last year, Hans explained that the command to
>> process xml files is:
>>
>>> The regular definitions still work but processing a file is done
>>> differently:
>>>
>>>    \xmlprocess{id}{filename}{optional initialization setup}
>>
>> I used to have environments with which to typeset a bunch of files.
>> How can  this be ported to the new mechanism, which appears to expect
>> a filename?
>
> \xmlprocess{main}{filename.xml}{} works for me.

I tried to translate this into the "new" mechanism and thought it  
should read like so:

\startxmlsetups xml:mysetups
\xmlsetsetup{\xmldocument}{text:p|section|quotation}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:mysetups}

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

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

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

\starttext
\xmlprocess{main}{test.xml}{}
\stoptext

But then, I only get "invalid xml file" in the output.

>
>
>> Sorry if these are very basic problems, but I'm probably a bit obtuse
>> here.
>
> You don't have to use new xml mechanism form MkIV, the old code could
> be used without problems. The advantage of the new code is direct
> access to elements in the tree (you could use xml files as database)
> and the option to read from zip files.
>
> Wolfgang

OK, I'll keep that in mind. Thanks for your help, Wolfgang!

Thomas


More information about the ntg-context mailing list