debian compat 9
[yazproxy-moved-to-github.git] / doc / reference.xml
index aa5fe2b..2ef809c 100644 (file)
@@ -32,7 +32,7 @@
        usual YAZ address format (typically
        <literal>tcp:<parameter>hostname</parameter>:<parameter>port</parameter></literal>)
        as described in
-       <ulink url="http://www.indexdata.dk/yaz/doc/comstack.addresses.tkl"
+       <ulink url="&url.yaz.comstack.addresses;"
        >the Addresses section of the YAZ manual</ulink>.
       </para>
      </listitem>
     </orderedlist>
    </para>
    <para>
-    If the proxy receives an SRW/SRU request, the following rules are used.
+    If the proxy receives an SRU request, the following rules are used.
     <orderedlist>
      <listitem>
       <para>If default target has Explain information with a
        <literal>database</literal> that matches the path of the
-       HTTP request of SRW/SRU that backend server is used for
-       SRW/SRU operation.
-       </para>
+       HTTP request of SRU that backend server is used for SRU operation.
+      </para>
      </listitem>
      <listitem>
       <para>
      </listitem>
     </orderedlist>
    </para>
-   <note>
-    <para>
-     We know it is stupid to only check for explain in default target.
-     It means that it is only possible to offer one SRW/SRU server.
-     We expect to improve that in the next version of the YAZ proxy.
-    </para>
-   </note>
   </section>
   <section id="proxy-keepalive">
    <title>Keep-alive Facility</title>
    </para>
    <para>
     The config file is XML based. The YAZ proxy must be compiled 
-    with <ulink url="http://www.xmlsoft.org/">libxml2</ulink> and
-    <ulink url="http://xmlsoft.org/XSLT/">libXSLT</ulink> support in
+    with <ulink url="&url.libxml2;">libxml2</ulink> and
+    <ulink url="&url.libxslt;">libXSLT</ulink> support in
     order for the config file facility to be enabled.
    </para>
    <para>
     <para>
      The proxy config file must have a root element called
      <literal>proxy</literal> and scoped within namespace
-     <literal> xmlns="http://indexdata.dk/yazproxy/schema/0.8/</literal>.
+     <literal> xmlns="http://indexdata.dk/yazproxy/schema/0.9/"</literal>.
      All information except an optional XML header must be stored
      within the <literal>proxy</literal> element.
     </para>
     <screen>
      &lt;?xml version="1.0"?>
-     &lt;proxy xmlns="http://indexdata.dk/yazproxy/schema/0.8/">
+     &lt;proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
       &lt;!-- content here .. -->
      &lt;/proxy>
     </screen>
      equivalent to command line option <literal>-t</literal>.
     </para>
     <para>
-     <screen>
-     &lt;?xml version="1.0"?>
-     &lt;proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
-      &lt;target name="server1" default="1">
-       &lt;!-- description of server1 .. -->
-      &lt;/target>
-      &lt;target name="server2">
-       &lt;!-- description of server2 .. -->
-      &lt;/target>
-     &lt;/proxy>
+      <screen><![CDATA[
+     <?xml version="1.0"?>
+     <proxy xmlns="http://indexdata.dk/yazproxy/schema/0.9/">
+      <target name="server1" default="1">
+       <!-- description of server1 .. -->
+      </target>
+      <target name="server2">
+       <!-- description of server2 .. -->
+      </target>
+     </proxy>
+      ]]>
      </screen>
     </para>
    </section>
     </para>
    </section>
 
+   <section id="proxy-config-max-sockets">
+    <title>max-sockets</title>
+    <para>
+     The element <literal>max-sockets</literal> is the child of element
+     <literal>target</literal> and specifies the maximum number of sockets
+     to use for the target for all sessions using it. In other words: maximum
+     number of Z39.50 session to the target.
+    </para>
+   </section>
+
    <section id="proxy-config-keepalive">
     <title>keepalive</title>
     <para>The <literal>keepalive</literal> element holds information about
     <title>syntax</title>
     <para>
      The <literal>syntax</literal> element specifies accept or reject
-     or a particular record syntax request from the client.
+     or a particular record syntax request from the client. It also
+     allows record conversion of XML records via XSLT.
     </para>
     <para>
      The <literal>syntax</literal> has one required attribute:
      record to OPACXML.
     </para>
     <para>
+      When <literal>marcxml</literal> is used, yazproxy assumes
+      that records retrieved from the backend are encoded in the
+      <ulink url="&url.marc8;">MARC-8</ulink> character set.
+      This is correct for most MARC21 based systems, but not for 
+      other MARC variants or UTF-8 based MARC21 systems.
+      The <literal>backendcharset</literal> attribute specifies
+      the character set of the MARC records to be converted.
+    </para>
+    <para>
      If attribute <literal>backendtype</literal> is given, that holds the
      record syntax to be transmitted to backend.
     </para>
     <para>
+     If attribute <literal>backendelementset</literal> is given, that holds
+     elementset to be transmitted to backend. An empty value of
+     <literal>backendelementset</literal> has the effect of omitting
+     any Comp-Spec (and elementset) sent to backend.
+    </para>
+    <para>If <literal>backendelementset</literal> is omitted, the element
+     set from client is used, except if <literal>marcxml</literal> is used.
+     In that case (using <literal>marcxml</literal>), no Comp-Spec and no
+     elementset is sent to backend.
+    </para>
+    <para>
      If attribute <literal>stylesheet</literal> is given, the proxy
      will convert XML record from server via XSLT. It is important
      that the content from server is XML. If used in conjunction with
     </para>
     <para>
      If attribute <literal>identifier</literal> is given that is the
-     SRW/SRU record schema identifier for the resulting output record (after
+     SRU record schema identifier for the resulting output record (after
      MARCXML and/or XSLT conversion). 
     </para>
     <para>
      If sub element <literal>title</literal> is given (as child element
-     of <literal>syntax</literal>, then that is the official SRW/SRU
+     of <literal>syntax</literal>, then that is the official SRU
      name of the resulting record schema.
     </para>
     <para>
     <title>explain</title>
     <para>
      The <literal>explain</literal> element includes Explain information
-     for SRW/SRU about the server in the target section. This
+     for SRU about the server in the target section. This
      information must have a <literal>serverInfo</literal> element
      with a database that this target must be available as (URL path).
      For example,
       </explain>
       ]]>
      </screen>
-     In the above case, the SRW/SRU service is available as
+     In the above case, the SRU service is available as
      <literal>http://myhost.org:8000/mydatabase</literal>.
     </para>
     
      The content of the <literal>cql2rpn</literal> element specifies
      the path from the working directory to a CQL-to-RPN conversion
      file for the server in the target section. This element
-     is required for SRW/SRU searches to operate against Z39.50
+     is required for SRU searches to operate against Z39.50
      servers that don't support CQL. Most Z39.50 servers only support
      Type-1/RPN so this is usually required.
     </para>
     <para>
      See YAZ documentation for more information about the
-     <ulink url="http://indexdata.dk/yaz/doc/tools.tkl#tools.cql.pqf">CQL
-      to PQF</ulink> conversion. See also the
+     <ulink url="&url.yaz.cql2pqf;">CQL to PQF</ulink> conversion.
+     See also the
      <filename>pqf.properties</filename> in the <filename>etc</filename> 
      (or <replaceable>prefix/share/yazproxy</replaceable>)
      directory of the YAZ proxy distribution.
     </para>
     <para>
      If this is specified the proxy will act as a Z39.50 server
-     supporting character set negotiation. And in SRW/SRU mode
+     supporting character set negotiation. And in SRU mode
      it will convert from UTF-8 (UNICODE) to this native character
      set (if possible).
     </para>
     </para>
     <tip>
      <para>
-      Using the <ulink url="http://www.gnu.org/software/bash/bash.html">
-       bash</ulink> shell, you can set the limit with
+      Using the <ulink url="&url.bash;">bash</ulink> shell, you can set
+      the limit with
       <literal>ulimit -n</literal><replaceable>no</replaceable>. 
        Use <literal>ulimit -a</literal> to display limits.
      </para>
     The <literal>categoryTypeId</literal> is either
     OID 1.2.840.10003.10.1000.81.1, 1.2.840.10003.10.1000.81.2
     for proxy target and proxy cookie respectively. The
-    integer element <literal>category</literal> is set to 0.
+    <literal>categoryValue</literal> is set to 1.
     The value proxy and cookie is stored in element
     <literal>characterInfo</literal> of the <literal>information</literal>
      choice.
    <screen><![CDATA[
 <?xml version="1.0"?>
 <!-- XML Schema for YAZ proxy config file.
-    $Id: reference.xml,v 1.18 2006-04-16 07:45:03 adam Exp $
 -->
 <xs:schema
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
      <xs:element ref="url" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element ref="target-timeout" minOccurs="0"/>
      <xs:element ref="client-timeout" minOccurs="0"/>
+     <xs:element ref="max-sockets" minOccurs="0"/>
      <xs:element ref="keepalive" minOccurs="0"/>
      <xs:element ref="limit" minOccurs="0"/>
      <xs:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
  <xs:element name="url" type="xs:string"/>
  <xs:element name="target-timeout" type="xs:integer"/>
  <xs:element name="client-timeout" type="xs:integer"/>
+ <xs:element name="max-sockets" type="xs:integer"/>
  <xs:element name="bandwidth" type="xs:integer"/>
  <xs:element name="pdu" type="xs:integer"/>
  <xs:element name="retrieve" type="xs:integer"/>
    <xs:attribute name="backendcharset" type="xs:string" />
    <xs:attribute name="usemarconstage1" type="xs:string" />
    <xs:attribute name="usemarconstage2" type="xs:string" />
+   <xs:attribute name="backendelementset" type="xs:string" />
   </xs:complexType>
  </xs:element>