Dear list, I have the following sample: \startbuffer[demo] <doc> <h1 id="#myspecialid">Document Title</h1> <h2 class="author">John Doe</h2> <h2 class="author">James Doe</h2> <h2 class="author">Jane Doe</h2> </doc> \stopbuffer \startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|h1}{xml:*} \xmlsetsetup{#1} {h2[contains(@class,'author')]} {xml:document:author} \stopxmlsetups \xmlregistersetup{xml:initialize} \startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:h1 \title{\xmlflush{#1}} \stopxmlsetups \startxmlsetups xml:document:author \xmlconcat{#1}{/all()}{\\} \xmlflush{#1} \stopxmlsetups \starttext \xmlprocessbuffer{main}{demo}{} \stoptext I have tried to use \xmlconcat in xml:document:author. I can’t get it working. What am I missing there? All I hwant is to have a between each h2[@class='author']. Many thanks for your help, Pablo -- http://www.ousia.tk
On 5/10/2015 1:12 PM, Pablo Rodriguez wrote:
Dear list,
I have the following sample:
\startbuffer[demo] <doc> <h1 id="#myspecialid">Document Title</h1> <h2 class="author">John Doe</h2> <h2 class="author">James Doe</h2> <h2 class="author">Jane Doe</h2> </doc> \stopbuffer
\startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|h1}{xml:*} \xmlsetsetup{#1} {h2[contains(@class,'author')]} {xml:document:author} \stopxmlsetups
\xmlregistersetup{xml:initialize}
\startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:h1 \title{\xmlflush{#1}} \stopxmlsetups
\startxmlsetups xml:document:author \xmlconcat{#1}{/all()}{\\} \xmlflush{#1} \stopxmlsetups
\starttext \xmlprocessbuffer{main}{demo}{} \stoptext
I have tried to use \xmlconcat in xml:document:author. I can’t get it working.
What am I missing there? All I hwant is to have a between each h2[@class='author'].
\startbuffer[demo] <doc> <h1 id="#myspecialid">Document Title</h1> <h2 class="author">John Doe</h2> <h2 class="author">James Doe</h2> <h2 class="author">Jane Doe</h2> <p>whatever</p> </doc> \stopbuffer \startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|h1}{xml:*} \stopxmlsetups \xmlregistersetup{xml:initialize} \startxmlsetups xml:doc \title{\xmltext{#1}{/h1}} \xmlconcat{#1}{/h2[@class='author']}{\\} \blank \xmlall{#1}{/!(h1|h2)} \stopxmlsetups \starttext \xmlprocessbuffer{main}{demo}{} \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 05/10/2015 01:24 PM, Hans Hagen wrote:
[...] \startbuffer[demo] <doc> <h1 id="#myspecialid">Document Title</h1> <h2 class="author">John Doe</h2> <h2 class="author">James Doe</h2> <h2 class="author">Jane Doe</h2> <p>whatever</p> </doc> \stopbuffer
\startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|h1}{xml:*} \stopxmlsetups
\xmlregistersetup{xml:initialize}
\startxmlsetups xml:doc \title{\xmltext{#1}{/h1}} \xmlconcat{#1}{/h2[@class='author']}{\\} \blank \xmlall{#1}{/!(h1|h2)} \stopxmlsetups
\starttext \xmlprocessbuffer{main}{demo}{} \stoptext
Many thanks for your reply, Hans. It works perfectly now. What I think I understand now is that it is impossible (it doesn’t make sense) to concatenate elements (pardon my inaccuracy) inside one of these elements. Many thanks for your help, Pablo -- http://www.ousia.tk
On 5/10/2015 5:36 PM, Pablo Rodriguez wrote:
On 05/10/2015 01:24 PM, Hans Hagen wrote:
[...] \startbuffer[demo] <doc> <h1 id="#myspecialid">Document Title</h1> <h2 class="author">John Doe</h2> <h2 class="author">James Doe</h2> <h2 class="author">Jane Doe</h2> <p>whatever</p> </doc> \stopbuffer
\startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|h1}{xml:*} \stopxmlsetups
\xmlregistersetup{xml:initialize}
\startxmlsetups xml:doc \title{\xmltext{#1}{/h1}} \xmlconcat{#1}{/h2[@class='author']}{\\} \blank \xmlall{#1}{/!(h1|h2)} \stopxmlsetups
\starttext \xmlprocessbuffer{main}{demo}{} \stoptext
Many thanks for your reply, Hans.
It works perfectly now.
What I think I understand now is that it is impossible (it doesn’t make sense) to concatenate elements (pardon my inaccuracy) inside one of these elements.
indeed, in that case you need to set a mode after the first and act upon that state (btw, don't use sequential - stream based - flushing for everything, sometimes it makes more sense to flush explicitly) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 05/10/2015 05:43 PM, Hans Hagen wrote:
On 5/10/2015 5:36 PM, Pablo Rodriguez wrote:
[...] What I think I understand now is that it is impossible (it doesn’t make sense) to concatenate elements (pardon my inaccuracy) inside one of these elements.
indeed, in that case you need to set a mode after the first and act upon that state
(btw, don't use sequential - stream based - flushing for everything, sometimes it makes more sense to flush explicitly)
Many thanks for the explanation and your advice, Hans. I suspect that the explicit flush requires to have a clearer element tree than the one I have in mind (I’m still eating some leafs :-)). Many thanks for your help, Pablo -- http://www.ousia.tk
participants (2)
-
Hans Hagen
-
Pablo Rodriguez