Am 22.10.2011 18:46, schrieb Thomas A. Schmitz:
> Hi all,
> 
> again, I'm playing a bit with processing my xml in lua. I want a simple
> interface for processing tables (I don't need all the power and
> complexity of cals tables and want to learn something in the process).
> And I thought that collecting the setups in lua might be the easiest
> way, but so far, I haven't been successful. Here's an example:
> 
> \startbuffer[test]
> <a>
>   <nattable frame="on">
>     <tr>
>       <td>1</td>
>       <td>2</td>
>       <td>3</td>
>       <td>4</td>
>     </tr>
>     <tr>
>       <td>5</td>
>       <td>6</td>
>       <td>7</td>
>       <td>8</td>
>     </tr>
>   </nattable>
> </a>
> \stopbuffer
> 
> \startxmlsetups xml:testsetups
>     \xmlsetsetup{main}{a|nattable|tr|td|}{xml:*}
> \stopxmlsetups
> 
> \xmlregistersetup{xml:testsetups}
> 
> \startxmlsetups xml:a
>     \xmlflush{#1}
> \stopxmlsetups
> 
> \startxmlsetups xml:nattable
>     \startluacode
>       framestate = lxml.att("#1", "frame")

context(type(framestate))

Here is the problem. The function lxml.att() only prints the attribute,
but returns nothing (framestate = nil). I looked into an old example of
mine where I played with attributes, but it's totally outdated (uses
xml.filters, now mkii only).

Sorry, no solution (goat milk was out).

Peter


[lxml-tex.lua]

function lxml.attribute(id,pattern,a,default)
    local collected = xmlapplylpath(getid(id),pattern)
    if collected then
        attribute(collected,a,default)
    end
end

local function attribute(collected,a,default)
    if collected and #collected > 0 then
        local at = collected[1].at
        local str = (at and at[a]) or default
        if str and str ~= "" then
            contextsprint(notcatcodes,str)
        end
    elseif default then
        contextsprint(notcatcodes,default)
    end
end


>       context(framestate)

does nothing


>       context(true)
>       context.placefigure( { "here" }, "none" , function()
>         context.setupTABLE( { "frame=on" } )
>         context.bTABLE()
>          context.xmlflush("#1")
>         context.eTABLE()
>       end)
>     \stopluacode
> \stopxmlsetups
> 
> \startxmlsetups xml:tr
>     \startluacode
>       context.bTR()
>         context.xmlflush("#1")
>       context.eTR()
>     \stopluacode
> \stopxmlsetups
> 
> \startxmlsetups xml:td
>     \startluacode
>       context.bTD()
>         context.xmlflush("#1")
>       context.eTD()
>     \stopluacode
> \stopxmlsetups
> 
> \starttext
> \xmlprocessbuffer{main}{test}{}
> \stoptext
> 
> question: I have the value "on" in the lua variable "framestate." But
> how can I pass this on to the line
> context.setupTABLE( { "frame=on" } )?
> I tried something like
> context.setupTABLE( { "frame=" .. framestate } )
> but that doesn't work. Any suggestions?
> 
> Thomas
> ___________________________________________________________________________________
> 
> 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://tex.aanhet.net
> archive  : http://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
> 
> 

___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to