A parallelizing XSLT processor using SAXON and Clojure
Clojure XML
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Version 0.2.0.

A warning from King Harold II . . .

This is pre-release software. It may fail to compile. It might have undocumented features. It certainly has unimplemented features. It definitely has bugs. You have been warned.


Norman is an XSLT processor (built on top of Saxon) that parallelizes across n processors.

Norman is designed for large transformation tasks. It is likely to be useful to you only under the following circumstances:

  1. You have at least hundreds, if not thousands of texts to process (at CDRH, we have used it to process collections exceeding 25,000 files).

  2. You can run Norman on multicore hardware.

If those two circumstances obtain, Norman might be just the thing.

Downloading and Running Norman

A pre-compiled jar containing everything needed to run Norman is available here.

You can run it with:

java -jar norman-X.X.X.jar -s [your_stylesheet]

By default, Norman looks for a NORMAN_HOME environment variable containing a directory path, and will expect to find directories beneath it labeled input (where your texts should reside) and output (where Norman will write the converted files). You can set these manually by passing fully qualified paths to the -i and -o switches.

Norman also takes the following switches:

-h, --help
-V, --version

The -s switch is mandatory.

Building Norman from Source

Norman is written entirely in Clojure using the Leiningen build tool. So assuming you have both Clojure (we're using version 1.5.1) and the current copy of Leiningen (version 2), you should be able to type:

lein deps
lein uberjar

This will generate a completely self-contained jar labeled norman-X.X.X.jar in $NORMAN_HOME/target. You can rename that as you please.

License, etc.

Norman is written and maintained by Stephen Ramsay for the Center for Digital Research in the Humanities at the University of Nebraska-Lincoln.

Copyright © 2012-2013 Board of Regents of the University of Nebraska-Lincoln. Norman may be freely distributed and/or modified subject to certain conditions. It is made available in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See COPYING for more details.