[NTG-context] Xml filtering in Lua
Thomas A. Schmitz
thomas.schmitz at uni-bonn.de
Sun Nov 20 19:19:18 CET 2022
On 11/17/22 11:04, Hans Hagen via ntg-context wrote:
>
> so, basically you collect data and use it later ... for huge datasets
> that saves some time
>
> if you have only chapters to process you can even decide to flush in
> that function
Alright, I'm making very good progress here, but right now I'm stumbling
upon a problem I can't solve. It's difficult to make a minimal example,
so bear with some snippets.
I load data from an external xml file (not the one I'm processing) and
store some of it in a lua table.
local examples = lxml.load ("my_examples", "examples.xml")
local sets = lxml.load ("my_sets", "example_sets.xml")
for e in xml.collected (examples, "/examples/chapter/example") do
local ex_id = e.at.id
all_examples [ex_id] = e
end
This works as expected, with print (inspect (all_examples)), I can see
that the table looks the way I expect.
I then retrieve some entries of the table by their key:
local current_example = all_examples [key]
Again, this appears to work; when I have a
lxml.displayverbatim (current_example)
in my file, the xml is typeset and looks like I would expect it to look.
However, whatever I try, I get the serialized xml typeset, with all
<tags> verbatim, instead of processed. Here's what I've tried:
\startxmlsetups xml:chapter:example
\xmlfirst {#1} {.} \par
\stopxmlsetups
lxml.command (current_example, ".", "xml:chapter:example")
or
xml.sprint (lxml.id (current_example))
or
local problem = xml.text (lxml.id (current_example), "./[text()]")
xml.sprint (problem)
I was expecting at least the last version to retrieve the pure text, but
it typesets again with the tags included.
So I guess my question is: how can I tell ConTeXt to parse my xml as xml
and apply the proper setups instead of serializing it?
All best wishes
Thomas
More information about the ntg-context
mailing list