# [NTG-context] referring to floats in xml

R. Ermers r.ermers at hccnet.nl
Mon Mar 21 07:28:53 CET 2011

```Thanks, Aditya, The first problem is adequately solved by adding []. I'll prepare an example for the second problem.

A related problem is referring to sections and other blocks.

<section id="sec:cows"><title>Cows</title>
<para>cows cows cows. As I told in <xref linkend="sec:cows"/></para></section>

The title is mapped as follows (lpath):
\xmlsetsetup{#1}{section/title}{xml:section/title}

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

The section is not mapped:
\startxmlsetups xml:section
\xmlflush{#1}
\stopxmlsetups

Adding [\xmlatt{#1}{id}] to xml:section:title does not work of course. Using [\xmlatt{#1}{id}] with xml:section puts the id before the \section command. I think one of the other commands has to be used in such a way that the id is flushed forward after the \section command.

Regards,

Robert

Op 20 mrt 2011, om 17:05 heeft Aditya Mahajan het volgende geschreven:

> On Sun, 20 Mar 2011, R. Ermers wrote:
>
>> Dear All,
>>
>> My xml docbook file contains a number of graphics. Some are regular figures, some are edgefigures. I have two questions in this respect.
>
> Understanding these snippets is difficult without a minimal working example.
>
>> A. referring to floats
>>
>> \placeedgefigure
>> [\xmlatt{#1}{id}]
>> {\xmlfirst{#1}{/caption}}
>> {\framed[frame=off]{\setlayer[graphics]{\xmlfirst{#1}{/imageobject}}}}
>>
>> \definefloat[edgefigure][figure]
>> \setupfloat[edgefigure]
>> [leftmargindistance=-\innercombitotal,rightmargindistance=-\outercombitotal,
>> default={outer,low,long}, criterium=.65\textwidth,numbering=no]
>>
>> <mediaobject id="fig:cow" role="edgefigure">
>>         <imageobject>
>>           <imagedata scale="500" fileref="cow.jpg"/>
>>         </imageobject>
>>       </mediaobject>
>>
>> I now wonder how to refer to these floats. That is, referring through <xref linkend="cow"/> is not difficult to implement, but for some reason the mapping of the id is not that obvious. I tried it like this:
>>
>> \startxmlsetups xml:mediaobject:edgefigure
>> \placeedgefigure
>> [\xmlatt{#1}{id}]
>> {\xmlfirst{#1}{/caption}}
>> {\framed[frame=off]{\setlayer[graphics]{\xmlfirst{#1}{/imageobject}}}}
>> \stopxmlsetups
>
>
> Try
>
> \placeedgefigure
>  []
>  [\xmlatt{#1}{id}]
>  {....}
>  {....}
>> B. edgefigures and regular figures
>>
>> The document contains two types of figures.
>>
>> \xmlsetsetup{#1}{mediaobject[@role='fig']}{xml:mediaobject:fig}
>> \xmlsetsetup{#1}{mediaobject[@role='edgefigure']}{xml:mediaobject:edgefigure}
>>
>> I have noticed that when <mediaobject> contains both the attributes id and role, such as the cow example, the figure is considered a regular figure automatically and will not typeset as an edgefigure.
>
> Please provide a minimal working example.
>