YAZ++ - A C++ library for YAZ
-$Id: README.txt,v 1.1 1999-01-28 09:41:07 adam Exp $
+$Id: README.txt,v 1.14 2004-01-07 11:49:03 adam Exp $
-o Introduction
-YAZ is development toolkit that implements the ANSI Z39.50 protocol.
-YAZ homepage is: http://www.indexdata.dk/yaz
+Introduction
+------------
-YAZ++ is a C++ wrapper on top of that YAZ. It provides a relatively
-simple, high level, interface to YAZ.
+YAZ++ is a C++ layer for YAZ and implements the ANSI Z39.50
+protocol for information retrieval (client and server side).
+The YAZ++ homepage is: http://www.indexdata.dk/yaz++/
-o Documentatation
+YAZ++ uses the same license as YAZ - see LICENSE file for details.
-Description of object model can be found in the sub directory doc, file
-index.html.
+Documentation
+-------------
-The documentation was auto-generated from source using doc++.
+Directory sub contains documentation in HTML and PDF. You can
+also read it online at http://www.indexdata.dk/yaz++/
-o Installation
+Overview
+--------
-Before compilation can take place YAZ must be installed. Unpack
-yaz-<version>.tar.gz in the same directory as yaz++.
+YAZ++ builds a programmers' library libyaz++.lib and a few
+example applications:
-For Unix - make sure you have a C++ compiler available. g++ works fine.
- $ cd unix
+ yaz-my-client basic client
+ yaz-my-server basic server
+ yaz-proxy not-so-basic proxy server
+
+Directory structure of the YAZ++ package:
+
+ -- src (C++ library and proxy source)
+ -- zoom (C++ source for ZOOM)
+ -- include/yaz++ (C++ headers)
+ -- lib (compiled libraries)
+ -- win (Windows build files)
+ -- doc (DocBook-format documentation)
+
+
+Installation, Unix
+------------------
+
+Make sure you have a C and C++ compiler available. gcc and g++ work fine.
+
+Before compilation can take place YAZ must be installed. It goes, roughly,
+like this:
+
+ $ cd yaz-<version>
$ ./configure
$ make
+ $ su
+ # make install
+ $ ^D
+ $ cd ..
+
+The YAZ proxy uses a configuration file in XML and libxml2 and libxslt
+is required in order for the config facility to work. Many systems already
+have libxml2/libxslt installed. In that, case remember to get the devel
+version of that as well (not just the runtime). Libxml2/libxslt can also be
+compiled easily on most systems. See http://www.xmlsoft.org/ for more
+information.
+
+Then, build YAZ++:
+
+ $ cd yaz++-<version>
+ $ ./configure
+ $ make
+
+If you do have libxslt installed and configure above does not find it,
+use option --with-xslt=PREFIX to specify location of libxslt and libxml2.
+yaz++ configure looks for PREFIX/bin/xslt-config.
+
+Installation, Windows
+---------------------
+
+YAZ++ for WIN32 should run on Windows 95/98/2K and Windows NT 4.0.
+Yaz++ was built using Microsoft Visual C++ 6.0. Other compilers
+should work but makefile/project files will have to be created for
+those compilers.
+
+ Workspace yazxx.dsw includes the projects
+ yazxx.dsp - builds yazxx.dll
+ yazclient.dsp - builds yazmyclient.exe
+ yazserver.dsp - builds yazmyserver.exe
+ yazproxy.dsp - builds yazproxy.exe
+
+
+About the proxy
+---------------
+
+For the proxy the actual target is determined in by the OtherInfo
+part of the InitRequest. We've defined an OID for this which we call
+PROXY. The OID is 1.2.840.10003.10.1000.81.1.
+
+ OtherInformation ::= [201] IMPLICIT SEQUENCE OF SEQUENCE{
+ category [1] IMPLICIT InfoCategory OPTIONAL,
+ information CHOICE{
+ characterInfo [2] IMPLICIT InternationalString,
+ binaryInfo [3] IMPLICIT OCTET STRING,
+ externallyDefinedInfo [4] IMPLICIT EXTERNAL,
+ oid [5] IMPLICIT OBJECT IDENTIFIER}}
+--
+ InfoCategory ::= SEQUENCE{
+ categoryTypeId [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ categoryValue [2] IMPLICIT INTEGER}
+
+The InfoCategory is present with categoryTypeId set to the PROXY OID
+and categoryValue set to 0. The information in OtherInformation uses
+characterInfo to represent the target using the form target[:port][/db].
+
+For clients that don't set the PROXY OtherInformation, a default
+target can be specified using option -t for proxy.
+
+Example:
+ We start the proxy so that it listens on port 9000. The default
+ target is Bell Labs Library unless it is overridden by a client in
+ the InitRequest.
+
+ $ ./yaz-proxy -t z3950.bell-labs.com/books @:9000
+
+ The client is started and talks to the proxy without specifying
+ a target. Hence this client will talk to the Bell Labs server.
+
+ $ ./yaz-client localhost:9000
+
+ The client is started and it specifies the actual target itself.
+
+ $ ./yaz-client -p localhost:9000 bagel.indexdata.dk/gils
+
+ For ZAP the equivalent would be
+ proxy=localhost:9000
+ target=bagel.indexdata.dk/gils
+ Simple, huh!
+
-For Windows. The software was build using Microsoft Visual C++ 5.0 and
-6.0. Other compilers should work but the makefile will have to be
-modified.
- > cd win
- > nmake (Visual C++ makefile not yet created)
+ZOOM-C++
+--------
+The ZOOM library in this distribution implements the ZOOM C++ binding
+described on the ZOOM web-site at
+ http://zoom.z3950.org/bind/cplusplus/index.html
+It provides a simple but powerful API for constructing Z39.50 client
+applications. See the documentation in doc/zoom.xml for much more
+information.