xml — XML Fragments creation
Given a string and a variable number of tag descriptors return XML fragment made by nesting the tags with the same hierarchical order they are listed on the command line. The tag descriptors can be a one element list (the tag) or an odd-length list whose first argument is the tag namme and the remaining elements are interpreted as attribute name-attribute value pairs.
::rivet::xml can work as a replacement of ::rivet::html provided you take care of sending the string with command puts
::rivet::xml "a string" b u <== <b><u>a string</u></b>
You can specify the tags attributes by replacing a tag specification with a odd-length list containing the tag name and a series of attribute-value pairs
::rivet::xml "a string" [list div class box id testbox] b i
<== <div class="box" id="testbox"><b><i>a string</i></b></div>
::rivet::xml "text to be wrapped in XML" div [list a href http://..../ title "info message"]
<== <div><a href="http://..../" title="info message">text to be wrapped in XML</a></div>
A single argument is interpreted as a list of tag name and attributes to be coded as a self closing element
::rivet::xml [list b a1 v1 a2 v2]
<== <b a1="v1" a2="v2" />
Unless the string is literally an empty string
::rivet::xml "" [list b a1 v1 a2 v2]
<== <b a1="v1" a2="v2"></b>
which is useful for generating 'script' elements in an HTML page header that wouldn't be understood as single closing element
::rivet::xml "" [list script type "text/javascript" src js/myscripts.js]
<== <script type="text/javascript" src="js/myscripts.js"></script>