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

___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to