[NTG-context] Problems mapping Xml into ConTeXt

Hans Hagen pragma at wxs.nl
Thu Oct 12 08:53:45 CEST 2006

Michael Wigston wrote:
>
> Hans Hagen wrote:
> > Michael Wigston wrote:
> > > 1.  This def of <u> does nothing ...
> > > \defineXMLgrouped [u] \underbar
> > >
> > \defineXMLargument[u]{\underbar}
> >
> > underbar is not a font switch but a macro that takes an argument
>
> Hans,
>
> Thanks, that works fine with \underbar, as well as \underbars,
> \overstrike, \overstrikes, \low, \high and \lohi.
>
> You mentioned that \underbar (and presumably the others I mentioned
> above) are macros taking arguments e.g. \acommand{...}. However
> presumably something like \midaligned{...}  is also a macro requiring
> an argument, but this works as a \defineXMLgrouped and as a
> \defineXMLargument - why does it  work with both?
the macro ones do manipulate their argument, for instance, underbar is
not a font charateristic or color switch or so i.e. not a real
attribute; esp using setups will make your style look better (look into
x-fo for instance, forget about the dirty tricks there, but it's pretty
clean; mapping values and so save many macro definitions
>
> The manual "XML in ConTeXt" very briefly sketched over these XML
> commands and I can see great potential to use them directly on XML to
> generate ConTeXt for PDF rather than the XSLT/XSL-FO route which seems
> to be gaining momentum in much of the industry. I don't suppose there
> is another more detailed document which elaborates on the XML
> commands, and how you may determine which of these is most appropriate
> for what kind of ConTeXt command mapping?
you can take a look into the x-* files which show quite some mappings;
indeed direct mapping is often more convenient than transformations;
future versions of context will also offer more manipulation possibilities
>
>
> Also at the moment a non-mapped element seems to automatically type
> out its contents as straight text - is there a way to override this
> behaviour and specify this as an error? (This is rather like the Ruby
> duck-typing approach - if an XML element is mapped, process it, else
> it is an error).
\startXMLignore
\stopXMLignore

in xtag-pre you can see:

\defineXMLenvironment [\s!default] \defaultXMLelement \defaultXMLelement
\defineXMLsingular    [\s!default] \defaultXMLelement

% \def\defaultXMLelement
%   {\iftraceXMLelements[\currentXMLfullidentifier]\fi}

\def\defaultXMLelement
{\iftraceXMLelements{\infofont<\currentXMLfullidentifier>}\fi}

%D We can use the default handler to implement automatic
%D element hiding. Beware: this overloads the tracer.

\def\startXMLignore{\dododefineXMLignore \s!default}
\def\stopXMLignore {\dododefineXMLprocess\s!default}

so you can play with the default handlers

Hans

-----------------------------------------------------------------