Provided by: libnet-z3950-simple2zoom-perl_1.04-1.1_all bug

NAME

       Net::Z3950::Simple2ZOOM::Config - configuration file for the Simple2ZOOM gateway

SYNOPSIS

        <client>
          <authentication>http://some.url/{user}/pwd={pass}<authentication>
          <database name="srubooks">
            <zurl>http://z3950.loc.gov:7090/voyager</zurl>
            <option name="sru">get</option>
            <charset>marc-8</charset>
            <search>
              <querytype>cql</querytype>
              <map use="4"><index>title</index></map>
              <map use="1003"><index>creator</index></map>
            </search>
          </database>
        </client>

DESCRIPTION

       The universal Swiss Army Gateway "simple2zoom" is configured by a single file, named on the command-line,
       and expressed in XML.  This file specifies which back-end databases are supported, how the back-ends are
       contacted, what character-sets they provide records in, and how to map Z39.50 searches to CQL.

       The structure of the file is pretty simple.

   Top Level
       <client>
           The  top-level  element  is  <client>.   It  contains a single optional <authentication> element, any
           number of <database> elements and a single optional <search> element.  The second of these  specifies
           how  to  interpret  requests  to  search in the configured databases; the last provides query mapping
           specifications for dynamically specified databases.

       <authentication>
           This element contains a URL template, specifying the address of an HTTP authentication  server.   The
           template  must  include  the  special  strings  "{user}" and "{pass}", which are substituted with the
           username and password supplied in the Init request, if any.  The resulting URL is  actioned  and  the
           result  examined:  any  successful  response  (HTTP  status 200) indicates that the username/password
           combination is acceptable,  and  that  the  session  can  continue;  any  other  response  (e.g.  401
           Authorization  Required)  results  in  the  Init  request  being  refused  with BIB-1 diagnostic 1014
           (Init/AC: Authentication System error).

           If the <authentication> element is omitted from the configuration, no authentication credentials  are
           required, and any that are provided are ignored.

           (A trivial example of an authentication server script is included in the Simple2ZOOM distribution, as
           "etc/sru-auth".)

       <database>
           The  <database> element carries a "name" attribute specifying the Z39.50 database name by which is it
           is known to clients.  It contains several complex elements, and is discussed in more detail below.

       <search>
           Each <search> element, whether contained within a specific <database>  (see  below)  or  at  the  top
           level,  consists  of  a  single  mandatory <querytype> element followed by any number of <map>s.  The
           content of <querytype> indicates the type of query that should be sent to the back-end  server,  with
           Simple2ZOOM reposible for translating incoming queries as required into that format.  At present, the
           only supported value is "cql".

       <map>
           Each <map> element carries a "use" attribute, which is the numeric value of BIB-1 use attribute to be
           supported,  and  optionally  contains a single <index> element which in turn contains the name of the
           corresponding CQL index.  Type-1 searches against the specified BIB-1 access point are mapped to  CQL
           searches against the specified index.

           If  the  <index> is omitted within a <map>, then the generated CQL query term has no index specified.
           This can be useful for BIB-1 attributes such as 1016 (any) and 1035 (anywhere).

   Databases
       The <database> element which describes each database contains the following  elements  in  the  specified
       order.

       In  general, <database> entries are of two kinds: those connecting through to a Z39.50 database will have
       no <search> element, since no query mapping is necessary to translate an incoming Type-1 query; but those
       connecting to an SRU or SRW database will have a <search> element  with  <querytype>  set  to  "cql"  and
       containing information on how to map from specified BIB-1 use attributes to CQL indexes.

       <zurl>
           Contains  the  target  address  of  the  back-end  database  (e.g.  "tcp:z3950.indexdata.com/gils" or
           "http://z3950.loc.gov:7090/voyager").

       <resultsetid>
           Optional.  If provided, it must take one of the following values, and if it is omitted then the value
           "fallback" is assumed:

           "id"
               When queries are received that include references to existing result-sets, these  are  translated
               into  result-set references using the "cql.resultSetId" index.  It is an error if the server does
               not support this facility.

           "search"
               References to existing result-sets are rewritten as resubmissions of the query.   This  works  on
               all  servers,  but  does  not  reliably give precisely correct results if the database is updated
               between searches.

           "fallback"
               Result-set references are used when supported, but resubmissions of prior queries are  used  when
               this facility is unavailable.

       <nonamedresultsets>
           This is optional.  If provided, it is empty and indicates that the back-end database does not support
           named result sets.

       <option>
           There  may  be  any number of these.  Each <option> element carries a "name" attribute and contains a
           corresponding value.  These are ZOOM options which are applied to the connection  when  it  is  first
           created,  and  can  be  used to control, for example, the desired "elementSetName" or "schema" of the
           records provided by the back-end.  A particularly important option is "sru",  which  may  be  set  to
           "get", "post" or "soap" to request vanilla SRU, SRU over POST and SRW respectively.

       <charset>
           Optional.  Contains the name of the character-set in which the back-end target supplies records (e.g.
           "marc-8")

       <search>
           Optional.   Provides  specifications  for  how  to  search  the  database, exactly like the top-level
           <search> element described above.

       <schema>
           Optional and repeatable: each element indicates special handling for when records are requested in  a
           particular schema.  See below.

       <sutrs-record>, <usmarc-record>, <grs1-record>.
           Optional.   Provides  specifications  for how to construct records in the relevant syntaxes when they
           are requested by clients.

           The format is the same in all cases: the specification contains a list of <field> elements,  each  of
           which  has  an  "xpath"  attribute  and  textual  content.   Records  are built by accessing the data
           addressed by the specified XPath expressions, and encoding each as an element addressed as  specified
           by  the  element  content.   The  interpretation  of  the  content is different for different record-
           syntaxes:

           SUTRS
               The content is ignored.

           USMARC
               The content indicates a MARC field by a string consisting of the following  parts,  in  order:  a
               three-digit  field number; optionally a slash followed by the first indicator; optionally another
               slash followed by the second indicator; optionally a dollar sign followed by a subfield tag.   In
               other    words,    MARC    field    specifications    much    match    the   regular   expression
               "/^\d\d\d(/w)?(/w?)(\$\w)?$/".  It is impossible to specify  the  second  indicator  without  the
               first, but a subfield may be specified along with zero, one or two indicators.

               As usual, a few examples are worth any amount of explanation:

                       001
                       260$c
                       500$a
                       100/1$a
                       245/1/0$a

           GRS-1
               The  content  indicates  an  address within a GRS-1 record in the form of one or more consecutive
               (type,value) pairs, each enclosed in  parentheses.   For  example,  "(1,14)"  would  indicate  an
               element  of  type  1  (tagSet-M)  with  value  14  (localControlNumber).   A  longer path such as
               "(3,admin)(2,6)" indicates an abstract field (tagSet-G element 6) within an "admin" sub-record.

   Schemas
       Each <schema> element is empty, but carries the following attributes, which are used to  provide  records
       to Z39.50 clients in MARC formats.

       oid Mandatory.   This  is  the  OID  of  a Z39.50 record-syntax which is to be handled by schema mapping.
           Requests in  this  database  for  this  record-syntax  are  handled  as  specified.   Example  value:
           1.2.840.10003.5.10

       sru Mandatory.   This  is  the  URI of an SRU/W schema which is requested from the SRU or SRW back-end in
           order to fulfill the request.  Example value: "info:srw/schema/1/marcxml-v1.1"

       format
           Optional.  Indicates which of the MARC variants is in use,  so  that  the  record  can  be  formatted
           correctly.  Defaults to "MARC21" if omitted.  Example values: "MARC21", "USMARC", "UNIMARC"

       encoding
           Optional.   Indicates  which  character-set  to use for the formatted record.  Defaults to "UTF-8" if
           omitted.  Example values: "UTF-8", <MARC-8>

       NOTE that in its current form this schema-mapping only works for the specific though  common  combination
       of Z39.50 front-end, SRU back-end and MARC record syntax.

CONFIGURATION FILE SCHEMA

       The  Simple2ZOOM  distribution  includes,  in  the  "etc"  directory,  an XML schema which can be used to
       validate configuration files.  This schema is provided in four formats:

       simple2zoom.rnc
           Relax-NG compact format: a simple, elegant, terse and wholly comprehensible XML  constraint  language
           that you don't even need to learn in order to understand.  This is the master version: the others are
           automatically generated from it.

       simple2zoom.rng
           Relax-NG  XML  format:  the world seems to have this zany fetish that everything must be specified in
           XML, so Relax-NG has an XML syntax that corresponds trivially with the  much  nicer  compact  syntax.
           The principle value of this is that "xmllint" understands it.

       simple2zoom.dtd
           An old-fashioned DTD (document type definition).

       simple2zoom.xsd
           If you must.

       Use whichever you like.  For example,

        xmllint --relaxng simple2zoom.rng --noout test.xml
        xmllint --dtdvalid simple2zoom.dtd --noout test.xml
        xmllint --schema simple2zoom.xsd --noout test.xml

SEE ALSO

       The "simple2zoom" program.

       The "Net::Z3950::Simple2ZOOM" module.

AUTHOR

       Mike Taylor <mike@indexdata.com>

COPYRIGHT AND LICENCE

       Copyright (C) 2007 by Index Data.

       This  library  is  free  software;  you can redistribute it and/or modify it under the same terms as Perl
       itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

perl v5.32.0                                       2021-01-06               Net::Z3950::Simple2ZOOM::Config(3pm)