XML
The functions gen-xml and parse-xml provide a quick method of going between xml and misc. XML is transformed into MISC by mapping a tag to [tag-name [child1 child2 ...] attribute1:"value" att2:"v2" ...].
Once in MISC manipulation is simple. This example gets an array of the cd names.
More complex transformation are also fairly simple. Like this code which reverses this poem.
[letrec '[ get-child:[lambda '[tag:1 name:2] '[foldm /tag/1 f:[lambda '[v:value r:1] '[if [= name /v/0] then:v else:r]]]] #:"Returns a poem with the title intact and a reversed array of <l> children." transform:[lambda '[mypoem:1] '{'poem title:/[get-child mypoem 'title]/1/0 [reverse [filter-array /mypoem/1 [lambda '[v:value] '[= "l" /v/0]]]]} ] ] '[gen-xml [transform [parse-xml "<?xml version=\"1.0\"?> <poem> <title>Roses are Red</title> <l>Roses are red,</l> <l>Violets are blue;</l> <l>Sugar is sweet,</l> <l>And I love you.</l> </poem>"]] ] ]