Work on zoom.xml
authorMike Taylor <mike@indexdata.com>
Wed, 9 Oct 2002 23:11:31 +0000 (23:11 +0000)
committerMike Taylor <mike@indexdata.com>
Wed, 9 Oct 2002 23:11:31 +0000 (23:11 +0000)
doc/zoom.xml

index 7aac7d8..0d3fcab 100644 (file)
@@ -1,8 +1,9 @@
 <chapter id="zoom">
- <!-- $Id: zoom.xml,v 1.4 2002-10-09 11:44:44 mike Exp $ -->
+ <!-- $Id: zoom.xml,v 1.5 2002-10-09 23:11:31 mike Exp $ -->
  <title>ZOOM-C++</title>
 
- <sect1 id="zoom.introduction">
+
+ <sect1 id="zoom-introduction">
   <title>Introduction</title>
   <para>
    <ulink url="http://staging.zoom.z3950.org/">ZOOM</ulink>
   </para>
  </sect1>
 
- <sect1>
+
+ <sect1 id="zoom-connection">
   <title><literal>ZOOM::connection</literal></title>
   <para>
-   SEE ALSO
-   <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.2"
-       >Section 3.2 (Connection) of the ZOOM Abstract API</ulink>
-  </para>
-  <para>
    A <literal>ZOOM::connection</literal> object represents an open
    connection to a Z39.50 server.  Such a connection is forged by
    constructing a <literal>connection</literal> object.
     };
   </synopsis>
   <para>
-   ### discusson
+   When a new <literal>connection</literal> is created, the hostname
+   and port number of a Z39.50 server must be supplied, and the
+   network connection is forged and wrapped in the new object.  If the
+   connection can't be established - perhaps because the hostname
+   couldn't be resolved, or there is no server listening on the
+   specified port - then an
+   <link linkend="zoom-exception"><literal>exception</literal></link>
+   is thrown.
+  </para>
+  <para>
+   The only other methods on a <literal>connection</literal> object
+   are for getting and setting options.  Any name-value pair of
+   strings may be set as options, and subsequently retrieved, but
+   certain options have special meanings which are understood by the
+   ZOOM code and affect the behaviour of the object that carries
+   them.  For example, the value of the
+   <literal>databaseName</literal> option is used as the name of the
+   database to query when a search is executed against the
+   <literal>connection</literal>.  For a full list of such special
+   options, see the ZOOM abstract API and the ZOOM-C documentation
+   (links below).
   </para>
+
+  <sect2>
+   <title>References</title>
+   <itemizedlist>
+    <listitem>
+     <para>
+      <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.2"
+       >Section 3.2 (Connection) of the ZOOM Abstract API</ulink>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <ulink url="file:///usr/local/src/z39.50/yaz/doc/zoom.html#zoom.connections"
+       >The Connections section of the ZOOM-C documentation</ulink>
+     </para>
+    </listitem>
+   </itemizedlist>
+  </sect2>
  </sect1>
 
- <sect1>
+
+ <sect1 id="zoom-query">
   <title><literal>ZOOM::query</literal> and subclasses</title>
   <para>
-   SEE ALSO
-   <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.3"
-       >Section 3.3 (Query) of the ZOOM Abstract API</ulink>
-  </para>
-  <para>
    The <literal>ZOOM::query</literal> class is a virtual base class,
    representing a query to be submitted to a server.  This class has
-   no methods, but two (so far) concrete subclasses:
+   no methods, but two (so far) concrete subclasses, each implementing
+   a specific query notation.
   </para>
 
   <sect2>
       ~prefixQuery ();
     };
    </synopsis>
+   <para>
+    It enables a query to be created from Yaz's cryptic but
+    powerful
+    <ulink url="file:///usr/local/src/z39.50/yaz/doc/tools.html#PQF"
+       >Prefix Query Notation (PQN)</ulink>.
+   </para>
   </sect2>
 
   <sect2>
       ~CCLQuery ();
     };
    </synopsis>
+   <para>
+    It enables a query to be created using the simpler but less
+    expressive
+    <ulink url="file:///usr/local/src/z39.50/yaz/doc/tools.html#CCL"
+       >Common Command Language (CCL)</ulink>.
+    The qualifiers recognised by the CCL parser are specified in an
+    external configuration file in the format described by the Yaz
+    documentation.
+   </para>
   </sect2>
 
   <sect2>
     <literal>resultSet</literal> class's constructor.
    </para>
    <para>
-    ### discusson
+    Given a suitable set of CCL qualifiers, the following pairs of
+    queries are equivalent:
    </para>
+   <screen>
+    prefixQuery("dinosaur");
+    CCLQuery("dinosaur");
+
+    prefixQuery("@and complete dinosaur");
+    CCLQuery("complete and dinosaur");
+
+    prefixQuery("@and complete @or dinosaur pterosaur");
+    CCLQuery("complete and (dinosaur or pterosaur)");
+
+    prefixQuery("@attr 1=7 0253333490");
+    CCLQuery("isbn=0253333490");
+   </screen>
+  </sect2>
+
+  <sect2>
+   <title>References</title>
+   <itemizedlist>
+    <listitem>
+     <para>
+      <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.3"
+       >Section 3.3 (Query) of the ZOOM Abstract API</ulink>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <ulink url="file:///usr/local/src/z39.50/yaz/doc/zoom.query.html"
+       >The Queries section of the ZOOM-C documentation</ulink>
+     </para>
+    </listitem>
+   </itemizedlist>
   </sect2>
  </sect1>
 
- <sect1>
+
+ <sect1 id="zoom-resultset">
   <title><literal>ZOOM::resultSet</literal></title>
   <para>
-   SEE ALSO
-   <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.4"
-       >Section 3.4 (Result Set) of the ZOOM Abstract API</ulink>
-  </para>
-  <para>
    A <literal>ZOOM::resultSet</literal> object represents a set of
-   record identified by a query that has been executed against a
-   particular connection.
+   records identified by a query that has been executed against a
+   particular connection.  The sole purpose of both
+   <literal>connection</literal> and <literal>query</literal> objects
+   is that they can be used to create new
+   <literal>resultSet</literal>s - that is, to perform a search on the
+   server on the remote end of the connection.
   </para>
   <para>
    The class has this declaration:
     };
   </synopsis>
   <para>
-   ### discusson
+   New <literal>resultSet</literal>s are created by the constructor,
+   which is passed a <literal>connection</literal>, indicating the
+   server on which the search is to be performed, and a
+   <literal>query</literal>, indicating what search to perform.  If
+   the search fails - for example, because the query is malformed -
+   then an
+   <link linkend="zoom-exception"><literal>exception</literal></link>
+   is thrown.
   </para>
+  <para>
+   Like <literal>connection</literal>s, <literal>resultSet</literal>
+   objects can carry name-value options.  The special options which
+   affect ZOOM-C++'s behaviour are the same as those for ZOOM-C and
+   are described in its documentation (link below).  In particular,
+   the <literal>preferredRecordSyntax</literal> option may be set to
+   a string such as ``USMARC'', ``SUTRS'' etc. to indicate what the
+   format in which records should be retrieved; and the
+   <literal>elementSetName</literal> option indicates whether brief
+   records (``B''), full records (``F'') or some other composition
+   should be used.
+  </para>
+  <para>
+   The <literal>size()</literal> method returns the number of records
+   in the result set.  Zero is a legitimate value: a search that finds
+   no records is not the same as a search that fails.
+  </para>
+  <para>
+   Finally, the <literal>getRecord</literal> method returns the
+   <parameter>i</parameter>th record from the result set, where
+   <parameter>i</parameter> is zero-based: that is, legitmate values
+   range from zero up to one less than the result-set size.
+  </para>
+
+  <sect2>
+   <title>References</title>
+   <itemizedlist>
+    <listitem>
+     <para>
+      <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.4"
+       >Section 3.4 (Result Set) of the ZOOM Abstract API</ulink>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <ulink url="file:///usr/local/src/z39.50/yaz/doc/zoom.resultsets.html"
+       >The Result Sets section of the ZOOM-C documentation</ulink>
+     </para>
+    </listitem>
+   </itemizedlist>
+  </sect2>
  </sect1>
 
- <sect1>
+
+ <sect1 id="zoom-record">
   <title><literal>ZOOM::record</literal></title>
   <para>
-   SEE ALSO
-   <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.5"
-       >Section 3.5 (Record) of the ZOOM Abstract API</ulink>
-  </para>
-  <para>
    A <literal>ZOOM::record</literal> object represents a chunk of data
    from a <literal>resultSet</literal> returned from a server.
   </para>
   <para>
    ### discusson
   </para>
+
+  <sect2>
+   <title>References</title>
+   <itemizedlist>
+    <listitem>
+     <para>
+      <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.5"
+       >Section 3.5 (Record) of the ZOOM Abstract API</ulink>
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <ulink url="file:///usr/local/src/z39.50/yaz/doc/zoom.records.html"
+       >The Records section of the ZOOM-C documentation</ulink>
+     </para>
+    </listitem>
+   </itemizedlist>
+  </sect2>
  </sect1>
 
- <sect1>
+
+ <sect1 id="zoom-exception">
   <title><literal>ZOOM::exception</literal> and subclasses</title>
   <para>
-   SEE ALSO
-   <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.7"
-       >Section 3.7 (Exception) of the ZOOM Abstract API</ulink>
-  </para>
-  <para>
    The <literal>ZOOM::exception</literal> class is a virtual base
    class, representing a diagnostic generated by the ZOOM-C++ library
    or returned from a server.  ###
     ### discusson
    </para>
   </sect2>
+
+  <sect2>
+   <title>References</title>
+   <itemizedlist>
+    <listitem>
+     <para>
+      <ulink url="http://staging.zoom.z3950.org/api/zoom-1.3.html#3.7"
+       >Section 3.7 (Exception) of the ZOOM Abstract API</ulink>
+     </para>
+    </listitem>
+   </itemizedlist>
+   <para>
+    Because C does not support exceptions, ZOOM-C has no API element
+    that corresponds directly with ZOOM-C++'s
+    <literal>exception</literal> class and its subclasses.  The
+    closest thing is the <literal>ZOOM_connection_error</literal>
+    function described in
+    <ulink url="file:///usr/local/src/z39.50/yaz/doc/zoom.html#zoom.connections"
+       >The Connections section</ulink> of the documentation.
+   </para>
+  </sect2>
  </sect1>
 
 </chapter>