Tax is an acronym for "Tiny API for XML". It's a small - and naïve - XML parser, which can handle basic XML. It's also quite slow and memory-hungry.

This was derived from code on the Tclers Wiki at http://wiki.tcl.tk/14534 by Eric Kemp-Benedict. This code only vaguely resembles the original by now. Several improvements mentioned on the wiki are not in this version.

A basic example, taken from comments in the source file:

    proc myparser {args} { puts "args: $args" }

    Tax parse {
    <meta author="Anne Onymous"/>
    <meta x="c { d } e &lt; f &gt; g &amp; h">
      Composed in haste for purposes of demonstration.
    </meta>
    <para indent='3'>This is the second paragraph.</para>
    eee
    <para blah='a &quot; b' beep=1>
      This line is indented.
    </para>
    } myparser

Output:

    args: docstart {} {
    }
    args: meta {author "Anne Onymous"} {}
    args: meta/ / {
    }
    args: meta {x "c { d } e < f > g & h"} {
      Composed in haste for purposes of demonstration.
    }
    args: meta/ {} {
    }
    args: para {indent "3"} {This is the second paragraph.}
    args: para/ {} {
    eee
    }
    args: para {blah "a \" b" beep 1} {
      This line is indented.
    }
    args: para/ {} {
    }
    args: docstart/ {} {}

Tax parse xml cmd ?top?

Parse an XML text, calling the specified command for each element.

The start and end of the parse are delimited with a pseudo node called "docstart" if the top argument is not specified.