%%
%% Ein Beispiel der DANTE-Edition
%%
%% 1. Auflage
%%
%%
%% Copyright (C) 2013 Herbert Voss
%%
%% It may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%%
%% See
http://www.latex-project.org/lppl.txt for details.
%%
%%
%% ====
\nopagenumbers\parindent=0pt
%StartShownPreambleCommands
\directlua{function printtable(tb, Ebene)
Ebene = Ebene or 1
local tab = "\string\\hbox to "..tostring((Ebene-1)*2).."em{}"
for k,v in pairs(tb) do
if type(v) \string~= "table" then
tex.print("\string\\hbox{"..tab..k.."="..v.."}\string\\par")
else
tex.print("\string\\hbox{"..tab..k.."}\string\\par")
Ebene=Ebene+1
printtable(v, Ebene)
end
end
end
xml = require('luaxml-mod-xml')
handler = require('luaxml-mod-handler')
%---------------------------------------------------
xmlBeispiel = [[
<a>
<d>hello</d>
<b>world.</b>
<b>another one</b>
</a>]]
%---------------------------------------------------
treehandler = handler.simpleTreeHandler()
x = xml.xmlParser(treehandler)
}
%StopShownPreambleCommands
\relax
foo \par\tt
\directlua{x:parse(xmlBeispiel)} \par % Parsen des xml-Codes
\directlua{printtable(treehandler.root)}\par % Ausgeben des xml-Baums als Text
\directlua{print(xml.serialize(treehandler.root))} % Auf der Konsole ausgeben
\directlua{tex.print(treehandler.root["a"]["b"][2])} % Direktzugriff auf einzelne Elemente
\bye