This is version 1.1 beta of the Cheshire project's SRW server. It acts as a gateway to any Z39.50 server, but is best suited to run in front of a Cheshire server (or one that will support dynamic XPath extraction of record elements via elementSetName) Author: Rob Sanderson (azaroth@liv.ac.uk) Copyright: (c) University of Liverpool, 2002-2004 Licence: GPL Requirements: * Python2.2 or better (http://www.python.org/) * PyZ3950 (Use CVS version included) (http://sourceforge.net/projects/tyrannioware/) * ZSI 1.3+ (http://sourceforge.net/projects/pywebsvcs/) Changes from version 1.0: * Support for SRW/CQL version 1.1 * Removed ZCheshire dependancy, now requires PyZ3950 * Sleeker more form-fitting code, especially with ZSI typecodes To do before final 1.1: * Support sort again. (ZOOM or PyZ3950 discussion reqd) * Fix attribute mapping from SRW and Z39.50 ZeeRex. (Currently uses PyZ3950/CQLUtils.ZConfig only) * Documentation! Documentation! Documentation! To do: * Support XPath and server side XSLT on non Cheshire servers, non database schemas. (Will require 4Suite, which is non trivial to install properly) * mod_python version to use Apache, not SimpleHTTPServer (Will require some sort of database interface to store resultsets, non trivial) Installation: You'll need to install ZSI and PyZ3950. In theory, you could run it with PyZ3950 in the SRW directory. But don't do that. It would be wrong. You'll -need- to write an SRW ZeeRex file for your database. There's no way around it, as the server configures from it. So suck it up and go to http://explain.z3950.org/ Or more likely, just edit one of the examples. You'll also need to edit the serverConfig.xml file. There will be docs on this, but it's fairly straight forwards. Edit the xsl files, if desired. run server.py Tell Rob if it works! Files: serverConfig.xml -- Configuration for databases and the main SRW server xml/* -- ZeeRex files for databases xsl/* -- XSL default templates for SRU server.py -- Instantiate server, configuration and start listening. SRWConfig.py -- Configuration for databases and server. SRWDiagnostics.py -- Diagnostics SRWHandlers.py -- Main operation handling code. SRU/SRW independant. SRWState.py -- Handle timeouts etc for resultsets and auth tokens SRWTypes.py -- ZSI typecodes and objects to represent messages zmarc.py -- (XXX) to be imported into zmarc.py in PyZ3950 SRWClient.py -- Trivially simple SRW Client using SRWTypes.py