diff options
Diffstat (limited to 'tex/context/base/lxml-sor.mkiv')
-rw-r--r-- | tex/context/base/lxml-sor.mkiv | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/tex/context/base/lxml-sor.mkiv b/tex/context/base/lxml-sor.mkiv new file mode 100644 index 000000000..06ef5b6ab --- /dev/null +++ b/tex/context/base/lxml-sor.mkiv @@ -0,0 +1,92 @@ +%D \module +%D [ file=lxml-sor, +%D version=2009.08.24, +%D title=\CONTEXT\ \XML\ Support, +%D subtitle=Sorting, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt XML Support / Sorting} + +\registerctxluafile{lxml-sor}{1.001} + +\unprotect + +\def\xmlresetsorter #1{\ctxlua{lxml.sorters.reset("#1")}} +\def\xmladdsortentry#1#2#3{\ctxlua{lxml.sorters.add("#1","#2","#3")}} +\def\xmlshowsorter #1{\ctxlua{lxml.sorters.show("#1")}} +\def\xmlflushsorter #1#2{\ctxlua{lxml.sorters.flush("#1","#2")}} +\def\xmlsortentries #1{\ctxlua{lxml.sorters.sort("#1")}} + +\protect \endinput + +\startbuffer[test] +<demo> + <entry> + <category>one</category> + <key>alpha</key> + <content>alpha indeed</content> + </entry> + <entry> + <category>one</category> + <key>gamma</key> + <content>gamma indeed</content> + </entry> + <entry> + <category>one</category> + <key>beta</key> + <content>beta indeed</content> + </entry> + <entry> + <category>two</category> + <key>alpha</key> + <content>alpha again</content> + </entry> + <entry> + <category>two</category> + <key>gamma</key> + <content>gamma again</content> + </entry> + <entry> + <category>two</category> + <key>beta</key> + <content>beta again</content> + </entry> +</demo> +\stopbuffer + +\startxmlsetups xml:mysetups + \xmlsetsetup{\xmldocument}{demo|entry|content}{xml:*} +\stopxmlsetups + +\xmlregistersetup{xml:mysetups} + +\startxmlsetups xml:demo + \xmlresetsorter{demo} + \xmlfilter{#1}{entry/command(xml:entry:getkeys)} + \blank sortkeys: \blank\xmlshowsorter{demo}\blank + \xmlsortentries{demo} + \xmlflushsorter{demo}{xml:entry:flush} +\stopxmlsetups + +\startxmlsetups xml:entry:getkeys + \xmladdsortentry{demo}{#1}{\xmltext{#1}{category}} + \xmladdsortentry{demo}{#1}{\xmltext{#1}{key|entry}} +\stopxmlsetups + +\startxmlsetups xml:entry:flush + \xmltext{#1}{content}\par +\stopxmlsetups + +\startxmlsetups xml:entry + \xmltext{#1}{content}\par +\stopxmlsetups + +\starttext + \xmlprocessbuffer{main}{test}{} +\stoptext |