Working on Jing and Trang

I've been back to working on Jing and Trang for about a month now. It would be something of an understatement to say that they were badly in need of some maintenance love.

I started a jing-trang project on Google Code to host future development. There are new releases of both Jing and Trang in the downloads section of the project site. These have been out for about 10 days, and there have been a reasonable number of downloads, and no reports of any major bugs, so I think these should be fairly solid.  (Interestingly, the number of downloads of Trang have been running at about twice those of Jing.)

It's been 5 years since the last release, so what new and exciting features are there? Well, actually, in the current release, none.  My work for that release was focused on two areas:

  • getting things to work properly with current versions of Java and other dependencies;
  • getting the source code structure and build system into reasonable shape.

The second was a lot of work. The code base for Jing and Trang had evolved over a number of years, incorporating various bits of functionality that were independent of each other to various degrees; its structure only made any sense from a historical perspective.  The current structure is now nicely modular.  I converted my CVS repository to subversion before I started moving things around, so the complete history is available in the project repository. For people who want to stay on the bleeding edge, it's now really easy to check out and build from subversion.

My natural tendencies are much more to the cathedral than to the bazaar, but I'm trying to be more open.  I'm pleased to say that are already two committers in addition to myself. There's a commercial XML editor called <oXygen/>, which uses Jing and Trang to support RELAX NG. The main guy behind that, George Bina, had made a number of useful improvements. In particular, he upgraded Jing's support for the Namespace Routing Language to its ISO-standardized version, which is called NVDL (you might want to start with this NVDL tutorial rather than the spec).  This is now on the trunk. The other committer is Henri Sivonen, who has been using Jing in his Validator.nu service.

My goals for the next release are:

  • complete support for NVDL (I think the only missing feature is inline schemas)
  • support for the ISO-standardized version of Schematron
  • customizable resource resolution support (so that, for example, you can use XML catalogs)
  • support standard JAXP XML validation API (javax.xml.validation)
  • more code cleanup

Please use the issue tracker to let me know what you would like.  Google Code has a system that allow you to vote for issues: if you are logged in, which you can do with a regular Google account, each issue will be displayed with a check box next to a star; checking this box "stars" the issue for you, which both adds a vote for the issue and gets you email notifications about changes to it.

I haven't started any project-specific mailing lists yet.  For developers, the issue tracker seems to be enough at the moment.  For users, Jing and Trang are within the scope of the existing RELAX NG Users mailing list on Yahoo Groups.


Jason S said...


I don't use trang very often, but occasionally use it to translate between a very readable .rnc / .rng file to .xsd format.

thanks for developing + look fwd to any improvements (though it's very good as is!). I vaguely remember, a year or two ago, wishing there were support for other XML Schema datatypes, but I can't really remember any more details.

Bob Lytle said...

James - excellent tools. I needed to document an XML data interface and didn't want to hand-build the XSD from scratch nor did I want to fill out the requisite forms to download a limited-trial commercial product. I found Trang very easy to use and have emailed my development team to bring it to their attention. Good work!

Bob Lytle
Technology Director,
HorizonWave, LLC