This is working demo of a method for editing arbitrary XML in Leo.

(20071217: rather than using this, check out Leo's @auto file support for XML)

WARNING: the script overwrites the file named by the selected node without warning. Apart from this warning, that is.

I don't have time right now to wrap it up as a proper plugin. Just make a script button from the node 'leo2xml' and run it with a node containing a filename selected. The file will be written using selected node's children to generate XML using the following rules:

  • If a headString contains only letters, numbers, '_' and ':' it's assumed to be an element name - this is weak but will usually work.
  • Anything else, like <!-- comments and <DOCTYPEs, is written as is with a newline at the end of the line.
  • For nodes that are elements, lines in the bodyString that match the pattern @ns:myAttrib="foo bar" are assumed to be attributes belonging to the element. 'ns:' is optional and either " or ' work.
  • After any elements are removed, the bodyString is written as is.