...XSH - XML Editing Shell

Support This Project

SF project page
Hosted on SourceForge
RSS feed

Older News

CVS version
Wed Sep 13 20:05:34 2006

Please note that CVS version contains various bug-fixes and improvements over XSH2 2.0.2 release. Here are some highlights.

  • many bugfixes
  • added new XSH command 'set' for easy creating and modifying nodes
  • improved namespace handling
  • function xsh:match added
  • completion for default, xsh, and user-defined XPath functions
  • print --no-space
  • xsh:filename() added
  • save --encoding flag added
  • rename syntax allows bare-words as names

A XSH2 2.0.3 release will follow later.

xmltools-bundle updated
Wed Sep 13 20:05:34 2006

A package containing latest libxml2, libxslt, and Perl modules required to run XSH2 on GNU/Linux or Unix platforms was updated to ship the latest versions: libxml2-2.6.26, XML::LibXML 1.60, libxslt-1.1.17, and XML::LibXML 1.60.

XSH2 2.0.2
Mon Jan 10 00:04:03 2005

This is a second pre-release of XSH2. Besides Windows packages it brings some bug-fixes as well as some new features

  • history file can be specified via $HISTORY variable
  • history file now defaults to ~/.xsh2_history
  • print (aka echo) has a new flag: --stderr (:e)
  • wrap has a new flag --inner (:i):
    wrap --inner a //b produces <b><a>...</a></b> from <b>...</b>
  • new apropos command for searching the help
  • save has a new flag: --subtree (:S)
  • various scattered fixes in the documentation
  • fixed a nasty bug that prevented &{...} constructs to work in perl>=5.8.5 (thanks to CPAN testers)

XSH2 2.0.1 pre-release
Sat Dec 4 22:46:52 2004

Finally, the first pre-release of XSH2 is out. This next-generation version of XSH is backward incompatible with 1.x releases, since the language evolved (for the better, I presume) in many aspects. I may still do some minor polishing before I call the language final, but most things are already there. The interpreter should be fairly stable.

Currently, only source packages are available. PPM distribution for Windows/ActivState will follow.

Of course, it is still possible to use both XSH and XSH2 installations simultaneously as they use different namespaces. You only have to rename one of the interpreters (e.g. xsh 1.x to xsh1 - recommended - or xsh 2.x to xsh2).

Besides being based on the XSH2 language, this release also introduces some new commands such as edit which allows opening a part of an XML document in an external editor and put the results back into the document.

List of most fundamental differences between XSH2 and XSH1 languages can be found here. Complete documentation can be found in the documentation section.

Beside syntax changes, the most remarkable changes in XSH2 could be summarized as follows:

  • unified XPath and Perl data model
  • only one kind of variables
  • better integration with Perl: any argument can be specified either as an XPath or Perl expression
  • commands and user-defined subroutines can return arbitrary objects
  • commands have flags and named-parameters (instead of many optional positional arguments as in XSH1): --flag or :f and --param val or :p val
  • various commands provide better functionality based on new options and flags introduced in XSH2
  • true lexical variables (a.k.a. my)
  • several new commands introduced: edit, edit-string canonical, index, my, set-dtd expr, do
  • several new XPath extension functions added: xsh:id2, xsh:lcfirst, xsh:lc, xsh:ucfirst, xsh:uc.
  • new eval command evaluates given string as XSH2 (previously, in XSH1, 'eval' was an alias for 'perl')
  • faster XSH-parser, faster evaluation engine

CVS branches
Wed Dec 1 19:42:37 2004

While preparing a XSH2 pre-release, I'm working on some CVS refactoring. Soon, I'm going to merge xsh2 branch with the main branch.

As a first step, I created a new branch, called prosaically xsh1, intended for possible future XSH1 bug-fixes.


cvs -d:pserver:anonymous@cvs.xsh.sourceforge.net:/cvsroot/xsh login
cvs -z3 co -r xsh1 xsh
to get the XSH1 CVS head.

Before I merge XSH2 with the main branch, use:

cvs -d:pserver:anonymous@cvs.xsh.sourceforge.net:/cvsroot/xsh login
cvs -z3 co -r xsh2 xsh
to get the XSH2 CVS head.

During the merging, the main branch may be quite unstable.

News: 1-5 | 6-10 | 11-15 | 16-20 | 21-25 | 26-30 | 31-33