<listitem>
<para>
Supports
- <ulink url="&url.solr;">Solr</ulink> Web Service version 1.4.x
+ <ulink url="&url.solr;">Apache Solr</ulink> Web Service version 1.4.x
(client side only)
</para>
</listitem>
<title>Reading this Manual</title>
<para>
Most implementors only need to read a fraction of the
- material in thie manual, so a quick walkthrough of the chapters
+ material in this manual, so a quick walkthrough of the chapters
is in order.
</para>
<itemizedlist>
<listitem>
<para>
<xref linkend="installation"/> contains installation
- instructions for &yaz;. You don't need reading this
+ instructions for &yaz;. You don't need to read this
if you expect to download &yaz; binaries.
However, the chapter contains information about how
to make <emphasis>your</emphasis> application link
<listitem>
<para>
<xref linkend="zoom"/> describes the ZOOM API of &yaz;.
- This is definitely worth a read if you wish to develop a Z39.50/SRU
+ This is definitely worth reading if you wish to develop a Z39.50/SRU
client.
</para>
</listitem>
<listitem>
<para>
<xref linkend="yaz-client"/> describes how to use the &yaz; Z39.50
- client. If you're developer and wish to test your server
+ client. If you're a developer and wish to test your server
or a server from another party, you might find this chapter
useful.
</para>
<xref linkend="odr"/> goes through the details of the
ODR module which is the work horse that encodes and decodes
BER packages. Implementors using ZOOM only, do <emphasis>not</emphasis>
- need reading this.
+ need to read this.
Most other Z39.50 implementors only need to read the first two
sections (<xref linkend="odr.introduction"/> and
<xref linkend="odr.use"/>).
level APIs of &yaz;.
</para>
<para>
- The YAZ toolkit modules is shown in figure <xref linkend="yaz.layer"/>.
+ The YAZ toolkit modules are shown in figure <xref linkend="yaz.layer"/>.
</para>
<figure id="yaz.layer">
<title>YAZ layers</title>
<note>
<para>
If you are using the premade definitions of the &asn; module, and you
- are not adding new protocol of your own, the only parts of &odr; that you
+ are not adding a new protocol of your own, the only parts of &odr; that you
need to worry about are documented in
<xref linkend="odr.use"/>.
</para>
<ulink url="&url.automake;">Automake</ulink> and
<ulink url="&url.libtool;">Libtool</ulink>
are used to generate Makefiles and configure &yaz; for the system.
- You do <emphasis>not</emphasis> these tools unless you're using the
+ You do <emphasis>not</emphasis> need these tools unless you're using the
Git version of &yaz;.
</para>
<para>
&yaz; includes a tiny ASN.1 compiler. This compiler is
written in <ulink url="&url.tcl;">Tcl</ulink>.
But as for Bison you do not need it unless you're using Git
- version of &yaz; or you're using the compiler to built own codecs
+ version of &yaz; or you're using the compiler to build your own codecs
for private ASN.1.
</para>
<para>
<replaceable>prefix</replaceable>. By default configure will
search for iconv on the system. Use this option if it
doesn't find iconv. Alternatively,
- <literal>--without-iconv</literal>, can be uset to force &yaz;
+ <literal>--without-iconv</literal>, can be used to force &yaz;
not to use iconv.
</para>
</listitem>
<replaceable>prefix</replaceable>.
Use this option if you want XSLT and XML support.
By default, configure will
- search for libxslt on the system. Use this option if it
+ search for libxslt on the system. Use this option if
libxslt is not found automatically. Alternatively,
<literal>--without-xslt</literal>, can be used to force &yaz;
not to use libxslt.
<replaceable>prefix</replaceable>.
Use this option if you want &yaz; to use XML and support SRU/Solr.
By default, configure will
- search for libxml2 on the system. Use this option if it
+ search for libxml2 on the system. Use this option if
libxml2 is not found automatically. Alternatively,
<literal>--without-xml2</literal>, can be used to force &yaz;
not to use libxml2.
This section describes how to compile - and link your own
applications using the &yaz; toolkit.
If you're used to Makefiles this shouldn't be hard. As for
- other libraries you have used before, you have to set a proper include
+ other libraries you have used before, you need to set a proper include
path for your C/C++ compiler and specify the location of
&yaz; libraries. You can do it by hand, but generally we suggest
you use the <filename>yaz-config</filename> that is generated
</para>
<note>
<para>
- libxslt depends libxml2.
+ libxslt depends on libxml2.
</para>
</note>
</listitem>
<term><filename>bin/yaz-icu.exe</filename></term>
<listitem><para>This program exposes the ICU wrapper library if that
is enabled for YAZ. Only if ICU is available this program is
- build.
+ built.
</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>bin/zoomtst1.exe</filename>,
<filename>bin/zoomtst2.exe</filename>, ..</term>
<listitem><para>
- Several small applications that demonstrates the ZOOM API.
+ Several small applications that demonstrate the ZOOM API.
</para></listitem>
</varlistentry>
</variablelist>
nmake install
</screen>
</para>
+ <note>
+ <para>
+ There's an error in <filename>configure.js</filename> for Libxml2 2.9.2.
+ Line 17 should be assigned to <filename>configure.ac</filename>
+ rather than <filename>configure.in</filename>.
+ </para>
+ </note>
<para>
For Libxslt it is similar. We must ensure that compilation of
Libxslt links against the already installed libxml2.
<screen>
cd win32
cscript configure.js prefix=c:\libxslt-1.1.28.win32 iconv=no \
- lib=c:\libxmlt-2.9.2.win32\lib \
- include=c:\libxmlt-2.9.2.win32\include\libxml2
+ lib=c:\libxml2-2.9.2.win32\lib \
+ include=c:\libxml2-2.9.2.win32\include\libxml2
nmake
nmake install
</screen>
first operation), holds the negotiated version with the server
(same or lower version).
</entry><entry>1.2</entry></row>
+ <row id="zoom.extraArgs.option"><entry>
+ extraArgs</entry><entry>
+ Extra arguments for SRU/Solr URLs. The value must be
+ URL encoded already.
+ </entry><entry></entry></row>
<row id="zoom.facets.option"><entry>
facets</entry><entry>
Requested or recommend facets may be given before a search is sent.
The <parameter>type</parameter> is a string of the format:
</para>
<para>
- <replaceable>format</replaceable>[;charset=<replaceable>from</replaceable>[/<replaceable>opacfrom</replaceable>][,<replaceable>to</replaceable>]][;format=<replaceable>v</replaceable>]
+ <replaceable>format</replaceable>[;charset=<replaceable>from</replaceable>[/<replaceable>opacfrom</replaceable>][,<replaceable>to</replaceable>]][;format=<replaceable>v</replaceable>][;base64=<replaceable>xpath</replaceable>]
</para>
<para>
- where <replaceable>format</replaceable> specifies the format of the
- returned record, <replaceable>from</replaceable>
+ If <literal>charset</literal> is given, then <replaceable>from</replaceable>
specifies the character set of the record in its original form
(as returned by the server), <replaceable>to</replaceable> specifies
- the output (returned)
- character set encoding.
- If <replaceable>to</replaceable> is omitted UTF-8 is assumed.
+ the output (returned) character set encoding.
+ If <replaceable>to</replaceable> is omitted, then UTF-8 is assumed.
If charset is not given, then no character set conversion takes place.
- </para>
-
- <para>OPAC records may be returned in a different
- set from the bibliographic MARC record. If this is this the case,
+ OPAC records may be returned in a different
+ set from the bibliographic MARC record. If this is this the case,
<replaceable>opacfrom</replaceable> should be set to the character set
of the OPAC record part.
</para>
+
+ <para>
+ The <literal>format</literal> is generic but can only be used to
+ specify XML indentation when the value <replaceable>v</replaceable>
+ is 1 (<literal>format=1</literal>).
+ </para>
+ <para>
+ The <literal>base64</literal> allows a full record to be extracted
+ from base64-encoded string in an XML document.
+ </para>
<note>
<para>
Specifying the OPAC record character set requires YAZ 4.1.5 or later.
</para>
+ <para>
+ Specifying the base64 parameter requires YAZ 4.2.35 or later.
+ </para>
</note>
<para>
The format argument controls whether record data should be XML
The <parameter>type</parameter> specifies the actual extended service
package type to be sent.
</para>
+ <table frame="top" id="zoom.extendedservices.type">
+ <title>Extended Service Type</title>
+ <tgroup cols="2">
+ <colspec colwidth="3*" colname="value"></colspec>
+ <colspec colwidth="7*" colname="description"></colspec>
+ <thead>
+ <row>
+ <entry>Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>itemorder</entry><entry>Item Order</entry>
+ </row>
+ <row>
+ <entry>update</entry><entry>Record Update</entry>
+ </row>
+ <row>
+ <entry>create</entry><entry>Database Create</entry>
+ </row>
+ <row>
+ <entry>drop</entry><entry>Database Drop</entry>
+ </row>
+ <row>
+ <entry>commit</entry><entry>Commit Operation</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
<table frame="top" id="zoom.extendedservices.options">
<title>Extended Service Common Options</title>
<tgroup cols="3">
<sect2 id="zoom.item.order">
<title>Item Order</title>
<para>
- For Item Order, type must be set to <literal>itemorder</literal> in
+ For Item Order, <literal>type</literal> must be set to
+ <literal>itemorder</literal> in
<function>ZOOM_package_send</function>.
</para>
<entry>none</entry>
</row>
<row>
+ <entry>itemorder-setname</entry>
+ <entry>Name of result set for record</entry>
+ <entry>default</entry>
+ </row>
+ <row>
<entry>itemorder-item</entry>
<entry>Position for item (record) requested. An integer</entry>
<entry>1</entry>
</tbody>
</tgroup>
</table>
+ <para>
+ There are two variants of item order: ILL-variant and
+ XML document variant. In order to use the XML variant the setting
+ <literal>doc</literal> must hold the XML item order document. If that
+ setting is unset, the ILL-variant is used.
+ </para>
+
+ <table frame="top" id="zoom.illrequest.options">
+ <title>ILL Request Options</title>
+ <tgroup cols="1">
+ <colspec colwidth="4*" colname="name"></colspec>
+ <thead>
+ <row>
+ <entry>Option</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry>protocol-version-num</entry></row>
+ <row><entry>transaction-id,initial-requester-id,person-or-institution-symbol,person</entry></row>
+ <row><entry>transaction-id,initial-requester-id,person-or-institution-symbol,institution</entry></row>
+ <row><entry>transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person</entry></row>
+ <row><entry>transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution</entry></row>
+ <row><entry>transaction-id,transaction-group-qualifier</entry></row>
+ <row><entry>transaction-id,transaction-qualifier</entry></row>
+ <row><entry>transaction-id,sub-transaction-qualifier</entry></row>
+ <row><entry>service-date-time,this,date</entry></row>
+ <row><entry>service-date-time,this,time</entry></row>
+ <row><entry>service-date-time,original,date</entry></row>
+ <row><entry>service-date-time,original,time</entry></row>
+ <row><entry>requester-id,person-or-institution-symbol,person</entry></row>
+ <row><entry>requester-id,person-or-institution-symbol,institution</entry></row>
+ <row><entry>requester-id,name-of-person-or-institution,name-of-person</entry></row>
+ <row><entry>requester-id,name-of-person-or-institution,name-of-institution</entry></row>
+ <row><entry>responder-id,person-or-institution-symbol,person</entry></row>
+ <row><entry>responder-id,person-or-institution-symbol,institution</entry></row>
+ <row><entry>responder-id,name-of-person-or-institution,name-of-person</entry></row>
+ <row><entry>responder-id,name-of-person-or-institution,name-of-institution</entry></row>
+ <row><entry>transaction-type</entry></row>
+ <row><entry>delivery-address,postal-address,name-of-person-or-institution,name-of-person</entry></row>
+ <row><entry>delivery-address,postal-address,name-of-person-or-institution,name-of-institution</entry></row>
+ <row><entry>delivery-address,postal-address,extended-postal-delivery-address</entry></row>
+ <row><entry>delivery-address,postal-address,street-and-number</entry></row>
+ <row><entry>delivery-address,postal-address,post-office-box</entry></row>
+ <row><entry>delivery-address,postal-address,city</entry></row>
+ <row><entry>delivery-address,postal-address,region</entry></row>
+ <row><entry>delivery-address,postal-address,country</entry></row>
+ <row><entry>delivery-address,postal-address,postal-code</entry></row>
+ <row><entry>delivery-address,electronic-address,telecom-service-identifier</entry></row>
+ <row><entry>delivery-address,electronic-address,telecom-service-addreess</entry></row>
+ <row><entry>billing-address,postal-address,name-of-person-or-institution,name-of-person</entry></row>
+ <row><entry>billing-address,postal-address,name-of-person-or-institution,name-of-institution</entry></row>
+ <row><entry>billing-address,postal-address,extended-postal-delivery-address</entry></row>
+ <row><entry>billing-address,postal-address,street-and-number</entry></row>
+ <row><entry>billing-address,postal-address,post-office-box</entry></row>
+ <row><entry>billing-address,postal-address,city</entry></row>
+ <row><entry>billing-address,postal-address,region</entry></row>
+ <row><entry>billing-address,postal-address,country</entry></row>
+ <row><entry>billing-address,postal-address,postal-code</entry></row>
+ <row><entry>billing-address,electronic-address,telecom-service-identifier</entry></row>
+ <row><entry>billing-address,electronic-address,telecom-service-addreess</entry></row>
+ <row><entry>ill-service-type</entry></row>
+ <row><entry>requester-optional-messages,can-send-RECEIVED</entry></row>
+ <row><entry>requester-optional-messages,can-send-RETURNED</entry></row>
+ <row><entry>requester-optional-messages,requester-SHIPPED</entry></row>
+ <row><entry>requester-optional-messages,requester-CHECKED-IN</entry></row>
+ <row><entry>search-type,level-of-service</entry></row>
+ <row><entry>search-type,need-before-date</entry></row>
+ <row><entry>search-type,expiry-date</entry></row>
+ <row><entry>search-type,expiry-flag</entry></row>
+ <row><entry>place-on-hold</entry></row>
+ <row><entry>client-id,client-name</entry></row>
+ <row><entry>client-id,client-status</entry></row>
+ <row><entry>client-id,client-identifier</entry></row>
+ <row><entry>item-id,item-type</entry></row>
+ <row><entry>item-id,call-number</entry></row>
+ <row><entry>item-id,author</entry></row>
+ <row><entry>item-id,title</entry></row>
+ <row><entry>item-id,sub-title</entry></row>
+ <row><entry>item-id,sponsoring-body</entry></row>
+ <row><entry>item-id,place-of-publication</entry></row>
+ <row><entry>item-id,publisher</entry></row>
+ <row><entry>item-id,series-title-number</entry></row>
+ <row><entry>item-id,volume-issue</entry></row>
+ <row><entry>item-id,edition</entry></row>
+ <row><entry>item-id,publication-date</entry></row>
+ <row><entry>item-id,publication-date-of-component</entry></row>
+ <row><entry>item-id,author-of-article</entry></row>
+ <row><entry>item-id,title-of-article</entry></row>
+ <row><entry>item-id,pagination</entry></row>
+ <row><entry>item-id,ISBN</entry></row>
+ <row><entry>item-id,ISSN</entry></row>
+ <row><entry>item-id,additional-no-letters</entry></row>
+ <row><entry>item-id,verification-reference-source</entry></row>
+ <row><entry>copyright-complicance</entry></row>
+ <row><entry>retry-flag</entry></row>
+ <row><entry>forward-flag</entry></row>
+ <row><entry>requester-note</entry></row>
+ <row><entry>forward-note</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
</sect2>
<sect2 id="zoom.record.update">
<title>Record Update</title>
<para>
- For Record Update, type must be set to <literal>update</literal> in
+ For Record Update, <literal>type</literal> must be set to
+ <literal>update</literal> in
<function>ZOOM_package_send</function>.
</para>
<table frame="top" id="zoom.record.update.options">
<sect2 id="zoom.database.create"><title>Database Create</title>
<para>
- For Database Create, type must be set to <literal>create</literal> in
+ For Database Create, <literal>type</literal> must be set to
+ <literal>create</literal> in
<function>ZOOM_package_send</function>.
</para>
<sect2 id="zoom.database.drop">
<title>Database Drop</title>
<para>
- For Database Drop, type must be set to <literal>drop</literal> in
+ For Database Drop, <literal>type</literal> must be set to
+ <literal>drop</literal> in
<function>ZOOM_package_send</function>.
</para>
<table frame="top" id="zoom.database.drop.options">
<sect2 id="zoom.commit">
<title>Commit Operation</title>
<para>
- For Commit, type must be set to <literal>commit</literal> in
+ For Commit, <literal>type</literal> must be set to
+ <literal>commit</literal> in
<function>ZOOM_package_send</function>.
</para>
</sect2>
in YAZ 4.2.38.
</entry>
</row>
+ <row><entry><literal>s=sl</literal></entry>
+ <entry>
+ Tokens are split into sub-phrases of all combinations - in order.
+ This facility appeared in YAZ 5.14.0.
+ </entry>
+ </row>
<row><entry><literal>r=o</literal></entry>
<entry>
Allows ranges and the operators greather-than, less-than, ...
</listitem>
</varlistentry>
<varlistentry>
- <term><literal>xslt</literal></term>
+ <term><literal>select</literal></term>
<listitem>
<para>
- The <literal>xslt</literal> element specifies a conversion
- via &acro.xslt;. The following attributes may be specified:
+ The <literal>select</literal> selects one or more text nodes
+ and decodes them as XML.
+ The following attributes may be specified:
<variablelist>
- <varlistentry><term><literal>stylesheet</literal> (REQUIRED)</term>
+ <varlistentry><term><literal>path</literal> (REQUIRED)</term>
<listitem>
<para>
- Stylesheet file.
+ X-Path expression for selecting text nodes.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
+ <para>
+ This conversion is available in YAZ 5.8.0 and later.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><literal>xslt</literal></term>
+ <listitem>
+ <para>
+ The <literal>xslt</literal> element specifies a conversion
+ via &acro.xslt;. The following attributes may be specified:
+ <variablelist>
+ <varlistentry><term><literal>stylesheet</literal> (REQUIRED)</term>
+ <listitem>
+ <para>
+ Stylesheet file.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
</sect2>