...XSH - XML Editing Shell

Support This Project

SF project page
Hosted on SourceForge
RSS feed


  • Based on excellent libxml2 library
  • Work with multiple DOM trees at once
  • Filesystem-like navigation within the DOM tree using XPath
  • XPath-based copy/move nodes within a DOM tree or between two DOM trees (with automatic node-type conversion, so that you may e.g. move text nodes into attributes or comments)
  • Deleting nodes, creating nodes of any type (elements, attributes, text, cdata, comments, well-balanced XML chunks, and (experimentally) even entity reference)
  • XPath-based search and XML listing
  • Arbitrary XPath and Perl expression evaluation
  • Conditional statements, while loop, Perl-like foreach loop
  • Command outupt redirection using a unix pipe; for example, use
    xsh> list //word | grep [A-Z] | less
    to read a list all word elements containing letters A to Z letters in less
  • XML and HTML supported on both input and output
  • XSLT transformation
  • Validaton against DTD, RelaxNG and W3C Schemas
  • XInclude support for both reading/writing
  • XUpdate support
  • Transparent conversion between XPath and Perl objects
  • Global, local and lexical variables (as in Perl)
  • User-defined procedures
  • XML Namespace support in XPath expressions
  • Lots of handy XPath extension functions
  • Support for user-definable XPath extension functions, implemented in Perl
  • Easy access to Perl and system calls
  • Fully featured interactive shell with history and TAB-completion (for XSH commands, XPath expressions, variables, filenames, etc).
  • Compilation into Perl script and Module::Compile support
  • Extensive on-line help and documentation
  • and more...