diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkxl/lxml-sor.mkxl')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkxl/lxml-sor.mkxl | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkxl/lxml-sor.mkxl b/Master/texmf-dist/tex/context/base/mkxl/lxml-sor.mkxl new file mode 100644 index 00000000000..798047e0423 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkxl/lxml-sor.mkxl @@ -0,0 +1,99 @@ +%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 ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D THIS IS VERY EXPERIMENTAL! + +\writestatus{loading}{ConTeXt XML Support / Sorting} + +\registerctxluafile{lxml-sor}{} + +\unprotect + +%D The flusher is unexpandable so that it can be used in tables (noalign +%D interferences). + +% todo: public implementors + +\permanent\protected\def\xmlresetsorter #1{\ctxlxml{sorters.reset("#1")}} +\permanent\protected\def\xmladdsortentry#1#2#3{\ctxlxml{sorters.add("#1","#2",\!!bs#3\!!es)}} +\permanent\protected\def\xmlshowsorter #1{\ctxlxml{sorters.show("#1")}} +\permanent \def\xmlflushsorter #1#2{\ctxlxml{sorters.flush("#1","#2")}} +\permanent\protected\def\xmlsortentries #1{\ctxlxml{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 |