[NTG-context] xml: spurious empty spaces

Thomas A. Schmitz thomas.schmitz at uni-bonn.de
Wed Oct 19 12:07:26 CEST 2016


Hi all,

below is a slightly silly example that demonstrates a problem I’m having: I want to process (in Lua) the xml element “b” only when it has an attribute “display” set. This works, but elements without the attribute leave spurious spaces in the pdf output. The workaround I’m currently using is

if xml.attribute(e, "./", "display", "") ~= "yes" then
  context.unskip()
else
  …

but that seems like a kludge. Is this expected behavior, or should this be fixed?

Thanks

Thomas

\startbuffer[test]
<a>
  <b display="yes">test</b>
  <b>test</b>
  <b>test</b>
  <b>test</b>
  <b display="yes">test</b>
  <b display="yes">test</b>
  <b>test</b>
</a>
\stopbuffer

\startxmlsetups xml:testsetups
	\xmlsetsetup{\xmldocument}{a|b}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:testsetups}

\startluacode
  function xml.functions.b(e)
  xml.strip(e, "/", nolines, anywhere)
  if xml.attribute(e, "./", "display", "") == "yes" then
      context.space()
      context("/")
      context.space()
      lxml.flush(e)
    end
  end
\stopluacode

\startxmlsetups xml:a
	\xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:b
 	 \xmlfunction{#1}{b} 
\stopxmlsetups

\starttext
\xmlprocessbuffer{main}{test}{}

\stoptext



More information about the ntg-context mailing list