Hi, For typesetting XML I'm wondering how to best store text for later use: I've tried using buffers, but this here doesn't work: ================== \startxmlsetups xml:article-meta \setupdocument [ pub-year=\xmlfilter{#1}{/pub-date/year/command(xml:article-meta:pubdate:year)}, volume=\xmlfilter{#1}{/volume/command(xml:article-meta:volume)}, doi=\xmlfilter{#1}{/article-id[@pub-id-type='doi']/command(xml:article-meta:doi)}, elocation-id=\xmlfilter{#1}{/elocation-id/command(xml:article-meta:elocation-id)}, title=\xmlfilter{#1}{/title-group/article-title/command(xml:article-meta:title-group:article-title)}, author={\AuthorList}, ] \startbuffer[abstract] \xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)} \stopbuffer \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:article-meta:abstract \xmlflush{#1} \stopxmlsetups =================== This here works: ================== \startxmlsetups xml:article-meta \setupdocument [ pub-year=\xmlfilter{#1}{/pub-date/year/command(xml:article-meta:pubdate:year)}, volume=\xmlfilter{#1}{/volume/command(xml:article-meta:volume)}, doi=\xmlfilter{#1}{/article-id[@pub-id-type='doi']/command(xml:article-meta:doi)}, elocation-id=\xmlfilter{#1}{/elocation-id/command(xml:article-meta:elocation-id)}, title=\xmlfilter{#1}{/title-group/article-title/command(xml:article-meta:title-group:article-title)}, author={\AuthorList}, abstract=\xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)}, ] \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:article-meta:abstract \xmlflush{#1} \stopxmlsetups =================== But has using a variable for the abstract any drawbacks? (The abstract might contain multiple paragraphs.) Best, Denis
A possibility is saving the data as text in a Lua-table. If you are not afraid to use some Lua, I can send my code for saving files and data for repeated use. dr. Hans van der Meer
On 18 Sep 2020, at 15:36, Denis Maier
wrote: Hi,
For typesetting XML I'm wondering how to best store text for later use:
I've tried using buffers, but this here doesn't work:
================== \startxmlsetups xml:article-meta \setupdocument [ pub-year=\xmlfilter{#1}{/pub-date/year/command(xml:article-meta:pubdate:year)}, volume=\xmlfilter{#1}{/volume/command(xml:article-meta:volume)}, doi=\xmlfilter{#1}{/article-id[@pub-id-type='doi']/command(xml:article-meta:doi)}, elocation-id=\xmlfilter{#1}{/elocation-id/command(xml:article-meta:elocation-id)}, title=\xmlfilter{#1}{/title-group/article-title/command(xml:article-meta:title-group:article-title)}, author={\AuthorList}, ] \startbuffer[abstract] \xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)} \stopbuffer \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:article-meta:abstract \xmlflush{#1} \stopxmlsetups ===================
This here works:
================== \startxmlsetups xml:article-meta \setupdocument [ pub-year=\xmlfilter{#1}{/pub-date/year/command(xml:article-meta:pubdate:year)}, volume=\xmlfilter{#1}{/volume/command(xml:article-meta:volume)}, doi=\xmlfilter{#1}{/article-id[@pub-id-type='doi']/command(xml:article-meta:doi)}, elocation-id=\xmlfilter{#1}{/elocation-id/command(xml:article-meta:elocation-id)}, title=\xmlfilter{#1}{/title-group/article-title/command(xml:article-meta:title-group:article-title)}, author={\AuthorList}, abstract=\xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)}, ] \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:article-meta:abstract \xmlflush{#1} \stopxmlsetups ===================
But has using a variable for the abstract any drawbacks? (The abstract might contain multiple paragraphs.)
Best, Denis ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
Am 18.09.2020 um 18:18 schrieb Hans van der Meer:
A possibility is saving the data as text in a Lua-table. If you are not afraid to use some Lua, I can send my code for saving files and data for repeated use.
Sorry, for answering only now. I've missed your response. That sounds interesting, and I'd be happy if you could send me your code. Best, Denis
On 9/18/2020 3:36 PM, Denis Maier wrote:
I've tried using buffers, but this here doesn't work: Why not just fetch it when needed. There is no gain in storing it and fetching from the xml tree is fast.
Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Am 18.09.2020 um 19:02 schrieb Hans Hagen:
On 9/18/2020 3:36 PM, Denis Maier wrote:
I've tried using buffers, but this here doesn't work: Why not just fetch it when needed. There is no gain in storing it and fetching from the xml tree is fast.
Most likely due to my limited understanding of how these things work. I thought storing the text and retrieving it later would be the easiest way to get rid of the constraints of linar processing of the XML file. The layout itself is determined by setups such as this one: \startsetups abstract \startabstract \documentvariable{abstract} \stopabstract \stopsetups \setuphead [chapter][ alternative=middle, page=yes, indentnext=no, style=\tfa\setupinterlinespace, after={\directsetup{placeauthors}\directsetup{abstract}}, footer=chapterfooter, ] How could I fetch the xml node from here so I don't need a variable, buffer or the like? Denis
On 9/18/2020 8:59 PM, Denis Maier wrote:
Am 18.09.2020 um 19:02 schrieb Hans Hagen:
On 9/18/2020 3:36 PM, Denis Maier wrote:
I've tried using buffers, but this here doesn't work: Why not just fetch it when needed. There is no gain in storing it and fetching from the xml tree is fast.
Most likely due to my limited understanding of how these things work. I thought storing the text and retrieving it later would be the easiest way to get rid of the constraints of linar processing of the XML file. The layout itself is determined by setups such as this one:
there is no linear processing, you just start someplace and recursively deal with the tree (which often looks like linear when you start at the root but basically you can access everything everywhere)
\startsetups abstract \startabstract \documentvariable{abstract} \stopabstract \stopsetups
\setuphead [chapter][ alternative=middle, page=yes, indentnext=no, style=\tfa\setupinterlinespace, after={\directsetup{placeauthors}\directsetup{abstract}}, footer=chapterfooter, ]
How could I fetch the xml node from here so I don't need a variable, buffer or the like? just pass the root element i.e. instead of #1 in
\xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)} as #1 is just an abstraction for the current element; you pass the name you used when loading the tree (often \xmldocument works too) there are plenty examples in the documentation and test suite and in some styles Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Am 19.09.2020 um 11:59 schrieb Hans Hagen:
On 9/18/2020 8:59 PM, Denis Maier wrote:
Am 18.09.2020 um 19:02 schrieb Hans Hagen:
On 9/18/2020 3:36 PM, Denis Maier wrote:
I've tried using buffers, but this here doesn't work: Why not just fetch it when needed. There is no gain in storing it and fetching from the xml tree is fast.
Most likely due to my limited understanding of how these things work. I thought storing the text and retrieving it later would be the easiest way to get rid of the constraints of linar processing of the XML file. The layout itself is determined by setups such as this one:
there is no linear processing, you just start someplace and recursively deal with the tree (which often looks like linear when you start at the root but basically you can access everything everywhere)
\startsetups abstract \startabstract \documentvariable{abstract} \stopabstract \stopsetups
\setuphead [chapter][ alternative=middle, page=yes, indentnext=no, style=\tfa\setupinterlinespace, after={\directsetup{placeauthors}\directsetup{abstract}}, footer=chapterfooter, ]
How could I fetch the xml node from here so I don't need a variable, buffer or the like? just pass the root element i.e. instead of #1 in
\xmlfilter{#1}{/abstract/command(xml:article-meta:abstract)}
as #1 is just an abstraction for the current element; you pass the name you used when loading the tree (often \xmldocument works too)
Thanks. That is very helpful. And indeed, that makes things much easier! Denis
participants (3)
-
Denis Maier
-
Hans Hagen
-
Hans van der Meer