Hi all, I'm testing the possibilities of xml and ConTeXt. I was wondering if it is possible to make an extra setup for every text-element. So it would be possible to have an setup in a very flexible way. It should be something like this: \startbuffer[text] <a> <b> First text. <hiding type="begin"/> Second text. </b> Third text. <hiding type="end"/> Fourth text. </a> \stopbuffer \startxmlsetups xml:textsetups \xmlsetsetup{#1}{a|b}{xml:*} \xmlsetsetup{#1}{hiding[type='begin']}{xml:hiding:begin} \xmlsetsetup{#1}{hiding[type='end'}{xml:hiding:end} \xmlsetsetup{#1}{text()}{xml:text} % Something like this is needed \stopxmlsetups \startxmlsetups xml:a \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:b \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:hiding:begin \enablemode[hiding] \stopxmlsetups \startxmlsetups xml:hiding:end \disablemode[hiding] \stopxmlsetups \startxmlsetups xml:text \startnotmode[hiding] \xmlflush{#1} \crlf \stopnotmode \stopxmlsetups So that the result will be: First text. Fourth text. Is something like this possible or is there still another way? Best regards, Martin
On 25-10-2011 12:52, Martin Fechner wrote:
Hi all,
I'm testing the possibilities of xml and ConTeXt. I was wondering if it is possible to make an extra setup for every text-element. So it would be possible to have an setup in a very flexible way. It should be something like this:
\startbuffer[text] <a> <b> First text. <hiding type="begin"/> Second text. </b> Third text. <hiding type="end"/> Fourth text. </a> \stopbuffer
\startxmlsetups xml:textsetups \xmlsetsetup{#1}{a|b}{xml:*} \xmlsetsetup{#1}{hiding[type='begin']}{xml:hiding:begin} \xmlsetsetup{#1}{hiding[type='end'}{xml:hiding:end} \xmlsetsetup{#1}{text()}{xml:text} % Something like this is needed \stopxmlsetups
\startxmlsetups xml:a \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:b \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:hiding:begin \enablemode[hiding] \stopxmlsetups
\startxmlsetups xml:hiding:end \disablemode[hiding] \stopxmlsetups
\startxmlsetups xml:text \startnotmode[hiding] \xmlflush{#1} \crlf \stopnotmode \stopxmlsetups
So that the result will be:
First text. Fourth text.
Is something like this possible or is there still another way?
it really depends on how the nesting works out as explicit grouping can interfere \startbuffer[text] <a> <b> First text. <hiding type="begin"/> Second text. </b> Third text. <hiding type="end"/> Fourth text. </a> \stopbuffer \startxmlsetups xml:textsetups \xmlsetsetup{#1}{a|b|hiding}{xml:*} \stopxmlsetups \xmlregistersetup{xml:textsetups} \startxmlsetups xml:a \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:b \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:hiding \doifelse {\xmlatt{#1}{type}} {begin} { \startnointerference } { \stopnointerference } \stopxmlsetups \starttext \xmlprocessbuffer{main}{text}{} \stoptext maybe it makes sense to have a 'hide' flag built in the serializer (or maybe some explicit stream related hooks) 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 -----------------------------------------------------------------
Am 25.10.2011 14:20, schrieb Hans Hagen:
\startxmlsetups xml:hiding \doifelse {\xmlatt{#1}{type}} {begin} { \startnointerference } { \stopnointerference } \stopxmlsetups
\starttext \xmlprocessbuffer{main}{text}{} \stoptext
maybe it makes sense to have a 'hide' flag built in the serializer (or maybe some explicit stream related hooks)
Hans
Thank you very much. Now every thing works. It helps me a lot. I am glad about such possibilities with XML and ConTeXt. Martin
participants (2)
-
Hans Hagen
-
Martin Fechner