You may want to consider some alternatives to Z39.50.

As Marc and Godmar have pointed out, you can set the record format to 'OPAC' in order to get holdings information in a Z39.50 search, but the III Z39.50 server has some key limitations.

First, the III Z39 Server only allows you to search on a handful of indexes.  If you have an exported list of records, you will likely want to be able to check item status using the bibliographic record id number, since that is the unique identifier for each record.  But the III Z39 server does not support a search for bib id.  That forces you to look-up the record using one of the supported indexes, which may not be sufficiently unique for your purposes.

Second, the III Z39 Server does not return results in the same fashion as the web interface.  In particular, any type of keyword search with a boolean operator behaves erratically, returning different results then you would expect.  That may not be crucial for your project, but it is something that has plagued our metasearch initiative here in the CSU for years.

Some alternatives to consider:

(1) The Innovative catalog does allow you to get an XML representation of any bibliographic or item record using the 'xrecord' parameter, like this:

You don't need to have XML Server for this, it is installed by default.  However, it does not attach item records to a request for a bib record.  So the only way to check the status of your holdings is to know in advance the item record id numbers for each bib record, and query each in turn.

(2) Screen scraping.  I know, I know, you'll say that's ugly.  It is, but honestly it is the approach we are leaning towards here for a number of things.

Here is an example using some PHP code I have.

Type in the server address and a bib record number.  It will return the record to you in MARC-XML with the item records attached as a series of 852 fields (you could change that behavior if you need to).


David Walker
Library Web Services Manager
California State University


From: Code for Libraries on behalf of Godmar Back
Sent: Wed 2/28/2007 9:34 AM
To: [log in to unmask]
Subject: Re: [CODE4LIB] Z39.50 for III Database?

Use yaz. This will give you basic holdings information.


> yaz-client
Z> open
Sent initrequest.
Connection accepted by v2 target.
ID     : Z39.50-III
Name   : z39-innopac
Version: 1
    OCTETSTRING(len=52) Innovative Interfaces Inc. Z39.50 SERVER version 1.1
Guessing visiblestring:
'Innovative Interfaces Inc. Z39.50 SERVER version 1.1'
Options: search present scan namedResultSets
Elapsed: 0.083577
Z> format opac
Z> find @attr 1=1003 @attr 4=1 "knuth donald"
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 19, setno 1
records returned: 0
Elapsed: 0.007483
Z> show 1
Sent presentRequest (1+1).
Records: 1
[INNOPAC]Record type: OPAC
Record type: USmarc
01013nam  22002658a 4500
001 ocm07948639
008 820506s1981    gw       b    101 0 eng
010    $a    81018418
020    $a 0387111573 (U.S.)
035    $a 0501-40660
040    $a DLC $c DLC
049    $a VPII
050 0  $a QA9.58 $b .A43
245 00 $a Algorithms in modern mathematics and computer science : $b
proceedings, Urgench, Uzbek SSR, September 16-22, 1979 / $c edited by
A.P. Ershov and D.E. Knuth.
260    $a Berlin ; $a New York : $b Springer-Verlag, $c 1981.
263    $a 8111.
300    $a xi, 487 p. : $b ill. ; $c 24 cm.
440  0 $a Lecture notes in computer science ; $v 122.
500    $a "The symposium was organized by the Academy of Sciences of
the Uzbek S.S.R."--Pref.
504    $a Includes bibliographies and index.
650  0 $a Algorithms $v Congresses.
650  0 $a Computer programming $v Congresses.
700 1  $a Ershov, A. P. $q (Andreśi Petrovich)
700 1  $a Knuth, Donald Ervin, $d 1938-
710 2  $a śUzbekiston SSR fanlar akademiŽižasi.

Data holdings 0
localLocation: Newman 4th Floor
callNumber: QA9.58 .A43
publicNote: AVAILABLE
nextResultSetPosition = 2
Elapsed: 0.192699

If you want XML, *do not* ask III's Z39.50 for the Z39.50 xml format.
Their XML is ill-formed. Instead, ask III's server for records with
holdings information using the "opac" format, as shown above, then
have yaz convert that into well-formed XML. See
for how to do that using yaz's PHP binding.

 - Godmar

On 2/28/07, Nathan Mealey <[log in to unmask]> wrote:
> Simmons is a III-based library. I'm in the midst of developing an
> application that uses a subset of our records that I've exported via
> creating a list and then pushing it into a MySQL database.
> We did not purchase the XMLServer module during the time that it was
> available, and so I don't have that as an option for querying our III
> database.
> What I'm wondering is whether Z39.50 would allow me to query our III
> database and receive an item's status information. And if yes, then what the
> technologies and/or steps involved would be (broadly speaking). Our III
> database definitely accepts Z39.50 queries, but I've haven't made use of
> this in an external application before.
> The application that I'm developing uses Rails & MySQL running on a Windows
> 2003 Server.
> Does anyone have any ideas about this?
> Thanks!
> --
> Nathan Mealey
> Systems Librarian
> Simmons College
> 617.521.2755
> [log in to unmask]