Removed some header files, they all contained one function prototype,
[idzebra-moved-to-github.git] / doc / recordmodel.xml
index 960cc37..e052f12 100644 (file)
@@ -1,5 +1,5 @@
  <chapter id="record-model">
  <chapter id="record-model">
-  <!-- $Id: recordmodel.xml,v 1.5 2002-08-28 09:39:45 mike Exp $ -->
+  <!-- $Id: recordmodel.xml,v 1.18 2004-08-04 08:26:43 adam Exp $ -->
   <title>The Record Model</title>
   
   <para>
   <title>The Record Model</title>
   
   <para>
@@ -8,7 +8,7 @@
    kind of structured data. Each record in the system is associated with
    a <emphasis>record schema</emphasis> which lends context to the data
    elements of the record.
    kind of structured data. Each record in the system is associated with
    a <emphasis>record schema</emphasis> which lends context to the data
    elements of the record.
-   Any number of record schema can coexist in the system.
+   Any number of record schemas can coexist in the system.
    Although it may be wise to use only a single schema within
    one database, the system poses no such restrictions.
   </para>
    Although it may be wise to use only a single schema within
    one database, the system poses no such restrictions.
   </para>
   <para>
    The record model described in this chapter applies to the fundamental,
    structured
   <para>
    The record model described in this chapter applies to the fundamental,
    structured
-   record type <literal>grs</literal> as introduced in
+   record type <literal>grs</literal>, introduced in
    <xref linkend="record-types"/>.
    <xref linkend="record-types"/>.
+   <!--
    FIXME - Need to describe the simple string-tag model, or at least 
    refer to it here. -H
    FIXME - Need to describe the simple string-tag model, or at least 
    refer to it here. -H
+   -->
   </para>
 
   <para>
   </para>
 
   <para>
@@ -31,7 +33,7 @@
 
    <itemizedlist>
     <listitem>
 
    <itemizedlist>
     <listitem>
-
+     
      <para>
       When records are accessed by the system, they are represented
       in their local, or native format. This might be SGML or HTML files,
      <para>
       When records are accessed by the system, they are represented
       in their local, or native format. This might be SGML or HTML files,
@@ -40,7 +42,8 @@
       input filter by preparing conversion rules based on regular
       expressions and possibly augmented by a flexible scripting language
       (Tcl).
       input filter by preparing conversion rules based on regular
       expressions and possibly augmented by a flexible scripting language
       (Tcl).
-      The input filter produces as output an internal representation:
+      The input filter produces as output an internal representation,
+      a tree structure.
 
      </para>
     </listitem>
 
      </para>
     </listitem>
@@ -92,7 +95,7 @@
     subsequent sections.
     Zebra can read structured records in many different formats.
     How this is done is governed by additional parameters after the
     subsequent sections.
     Zebra can read structured records in many different formats.
     How this is done is governed by additional parameters after the
-    "grs" keyboard, separated by "." characters.
+    "grs" keyword, separated by "." characters.
    </para>
 
    <para>
    </para>
 
    <para>
 
      <screen>
       &#60;Distributor&#62;
 
      <screen>
       &#60;Distributor&#62;
-      &#60;Name&#62; USGS/WRD &#60;/Name&#62;
-      &#60;Organization&#62; USGS/WRD &#60;/Organization&#62;
-      &#60;Street-Address&#62;
-      U.S. GEOLOGICAL SURVEY, 505 MARQUETTE, NW
-      &#60;/Street-Address&#62;
-      &#60;City&#62; ALBUQUERQUE &#60;/City&#62;
-      &#60;State&#62; NM &#60;/State&#62;
-      &#60;Zip-Code&#62; 87102 &#60;/Zip-Code&#62;
-      &#60;Country&#62; USA &#60;/Country&#62;
-      &#60;Telephone&#62; (505) 766-5560 &#60;/Telephone&#62;
+        &#60;Name&#62; USGS/WRD &#60;/Name&#62;
+        &#60;Organization&#62; USGS/WRD &#60;/Organization&#62;
+        &#60;Street-Address&#62;
+          U.S. GEOLOGICAL SURVEY, 505 MARQUETTE, NW
+        &#60;/Street-Address&#62;
+        &#60;City&#62; ALBUQUERQUE &#60;/City&#62;
+        &#60;State&#62; NM &#60;/State&#62;
+        &#60;Zip-Code&#62; 87102 &#60;/Zip-Code&#62;
+        &#60;Country&#62; USA &#60;/Country&#62;
+        &#60;Telephone&#62; (505) 766-5560 &#60;/Telephone&#62;
       &#60;/Distributor&#62;
      </screen>
 
     </para>
 
       &#60;/Distributor&#62;
      </screen>
 
     </para>
 
-    <note>
-     <para>
+    <!-- There is no indentation in the example above!  -H
+    -note-
+     -para-
       The indentation used above is used to illustrate how Zebra
       interprets the mark-up. The indentation, in itself, has no
       significance to the parser for the canonical input format, which
       discards superfluous whitespace.
       The indentation used above is used to illustrate how Zebra
       interprets the mark-up. The indentation, in itself, has no
       significance to the parser for the canonical input format, which
       discards superfluous whitespace.
-     </para>
-    </note>
+     -/para-
+    -/note-
+    -->
+
     <para>
      The keywords surrounded by &lt;...&gt; are
      <emphasis>tags</emphasis>, while the sections of text
     <para>
      The keywords surrounded by &lt;...&gt; are
      <emphasis>tags</emphasis>, while the sections of text
      Each element is terminated by a closing tag - beginning
      with <literal>&#60;</literal>/, and containing the same symbolic
      tag-name as the corresponding opening tag.
      Each element is terminated by a closing tag - beginning
      with <literal>&#60;</literal>/, and containing the same symbolic
      tag-name as the corresponding opening tag.
-     The general closing tag - <literal>&#60;</literal>&gt;/ -
+     The general closing tag - <literal>&lt;/&gt;</literal> -
      terminates the element started by the last opening tag. The
      structuring of elements is significant.
      The element <emphasis>Telephone</emphasis>,
      terminates the element started by the last opening tag. The
      structuring of elements is significant.
      The element <emphasis>Telephone</emphasis>,
 
       <screen>
        &#60;gils&#62;
 
       <screen>
        &#60;gils&#62;
-       &#60;title&#62;Zen and the Art of Motorcycle Maintenance&#60;/title&#62;
+          &#60;title&#62;Zen and the Art of Motorcycle Maintenance&#60;/title&#62;
        &#60;/gils&#62;
       </screen>
 
        &#60;/gils&#62;
       </screen>
 
 
     </sect3>
 
 
     </sect3>
 
-    <sect3>
+    <sect3><!-- ### we shouldn't make such a big deal about this -->
      <title>Variants</title>
 
      <para>
      <title>Variants</title>
 
      <para>
       tag with the same <emphasis>class</emphasis> and
       <emphasis>value</emphasis> settings, or by the
       appearance of another, normal tag. In other words, the end-tags for
       tag with the same <emphasis>class</emphasis> and
       <emphasis>value</emphasis> settings, or by the
       appearance of another, normal tag. In other words, the end-tags for
-      the variants used in the example above could have been saved.
+      the variants used in the example above could have been omitted.
      </para>
 
      <para>
      </para>
 
      <para>
     </para>
 
     <para>
     </para>
 
     <para>
-     An action is surrounded by curly braces (&lcub;...&rcub;), and
+     An action is surrounded by curly braces ({...}), and
      consists of a sequence of statements. Statements may be separated
      by newlines or semicolons (;).
      Within actions, the strings that matched the expressions
      immediately preceding the action can be referred to as
      consists of a sequence of statements. Statements may be separated
      by newlines or semicolons (;).
      Within actions, the strings that matched the expressions
      immediately preceding the action can be referred to as
-     &dollar;0, &dollar;1, &dollar;2, etc.
+     $0, $1, $2, etc.
     </para>
 
     <para>
     </para>
 
     <para>
      <variablelist>
 
       <varlistentry>
      <variablelist>
 
       <varlistentry>
-       <term>begin <emphasis>type &lsqb;parameter ... &rsqb;</emphasis></term>
+       <term>begin <replaceable>type [parameter ... ]</replaceable></term>
        <listitem>
         <para>
          Begin a new
        <listitem>
         <para>
          Begin a new
-         data element. The type is one of the following:
+         data element. The <replaceable>type</replaceable> is one of
+         the following:
          <variablelist>
          <variablelist>
-
+          
           <varlistentry>
            <term>record</term>
            <listitem>
           <varlistentry>
            <term>record</term>
            <listitem>
              name of the schema that describes the structure of the record, eg.
              <literal>gils</literal> or <literal>wais</literal> (see below).
              The <literal>begin record</literal> call should precede
              name of the schema that describes the structure of the record, eg.
              <literal>gils</literal> or <literal>wais</literal> (see below).
              The <literal>begin record</literal> call should precede
-             any other use of the <emphasis>begin</emphasis> statement.
+             any other use of the <replaceable>begin</replaceable> statement.
             </para>
            </listitem>
           </varlistentry>
             </para>
            </listitem>
           </varlistentry>
            <listitem>
             <para>
              Begin a new node in a variant tree. The parameters are
            <listitem>
             <para>
              Begin a new node in a variant tree. The parameters are
-             <emphasis>class type value</emphasis>.
+             <replaceable>class type value</replaceable>.
             </para>
            </listitem>
           </varlistentry>
             </para>
            </listitem>
           </varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>data</term>
+       <term>data <replaceable>parameter</replaceable></term>
        <listitem>
         <para>
          Create a data element. The concatenated arguments make
        <listitem>
         <para>
          Create a data element. The concatenated arguments make
          the layout (whitespace) of the data should be retained for
          transmission.
          The option <literal>-element</literal>
          the layout (whitespace) of the data should be retained for
          transmission.
          The option <literal>-element</literal>
-         <emphasis>tag</emphasis> wraps the data up in
-         the <emphasis>tag</emphasis>.
+         <replaceable>tag</replaceable> wraps the data up in
+         the <replaceable>tag</replaceable>.
          The use of the <literal>-element</literal> option is equivalent to
          The use of the <literal>-element</literal> option is equivalent to
-         preceding the command with a <emphasis>begin
-          element</emphasis> command, and following
-         it with the <emphasis>end</emphasis> command.
+         preceding the command with a <replaceable>begin
+          element</replaceable> command, and following
+         it with the <replaceable>end</replaceable> command.
         </para>
        </listitem>
       </varlistentry>
       <varlistentry>
         </para>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>end <emphasis>&lsqb;type&rsqb;</emphasis></term>
+       <term>end <replaceable>[type]</replaceable></term>
        <listitem>
         <para>
          Close a tagged element. If no parameter is given,
          the last element on the stack is terminated.
          The first parameter, if any, is a type name, similar
        <listitem>
         <para>
          Close a tagged element. If no parameter is given,
          the last element on the stack is terminated.
          The first parameter, if any, is a type name, similar
-         to the <emphasis>begin</emphasis> statement.
-         For the <emphasis>element</emphasis> type, a tag
+         to the <replaceable>begin</replaceable> statement.
+         For the <replaceable>element</replaceable> type, a tag
          name can be provided to terminate a specific tag.
         </para>
        </listitem>
       </varlistentry>
          name can be provided to terminate a specific tag.
         </para>
        </listitem>
       </varlistentry>
+
+      <varlistentry>
+       <term>unread <replaceable>no</replaceable></term>
+       <listitem>
+        <para>
+         Move the input pointer to the offset of first character that
+         match rule given by <replaceable>no</replaceable>.
+         The first rule from left-to-right is numbered zero,
+         the second rule is named 1 and so on.
+        </para>
+       </listitem>
+      </varlistentry>
+
      </variablelist>
     </para>
 
      </variablelist>
     </para>
 
       /^Subject:/ BODY /$/ { data -element title $1 }
       /^Date:/ BODY /$/    { data -element lastModified $1 }
       /\n\n/ BODY END      {
       /^Subject:/ BODY /$/ { data -element title $1 }
       /^Date:/ BODY /$/    { data -element lastModified $1 }
       /\n\n/ BODY END      {
-      begin element bodyOfDisplay
-      begin variant body iana "text/plain"
-      data -text $1
-      end record
+         begin element bodyOfDisplay
+         begin variant body iana "text/plain"
+         data -text $1
+         end record
       }
      </screen>
 
     </para>
 
     <para>
       }
      </screen>
 
     </para>
 
     <para>
-     If Zebra is compiled with support for Tcl (Tool Command Language)
-     enabled, the statements described above are supplemented with a complete
+     If Zebra is compiled with support for Tcl enabled, the statements
+     described above are supplemented with a complete
      scripting environment, including control structures (conditional
      expressions and loop constructs), and powerful string manipulation
      scripting environment, including control structures (conditional
      expressions and loop constructs), and powerful string manipulation
-     mechanisms for modifying the elements of a record. Tcl is a popular
-     scripting environment, with several tutorials available both online
-     and in hardcopy.
+     mechanisms for modifying the elements of a record.
     </para>
 
    </sect2>
     </para>
 
    </sect2>
    <para>
 
     <screen>
    <para>
 
     <screen>
-     TITLE     "Zen and the Art of Motorcycle Maintenance"
      ROOT 
      ROOT 
-     AUTHOR    "Robert Pirsig"
+        TITLE     "Zen and the Art of Motorcycle Maintenance"
+        AUTHOR    "Robert Pirsig"
     </screen>
 
    </para>
     </screen>
 
    </para>
    <para>
 
     <screen>
    <para>
 
     <screen>
-     TITLE     "Zen and the Art of Motorcycle Maintenance"
      ROOT  
      ROOT  
-     FIRST-NAME "Robert"
-     AUTHOR
-     SURNAME    "Pirsig"
+        TITLE  "Zen and the Art of Motorcycle Maintenance"
+        AUTHOR
+           FIRST-NAME "Robert"
+           SURNAME    "Pirsig"
     </screen>
 
    </para>
     </screen>
 
    </para>
      Which of the two elements are transmitted to the client by the server
      depends on the specifications provided by the client, if any.
     </para>
      Which of the two elements are transmitted to the client by the server
      depends on the specifications provided by the client, if any.
     </para>
-
+    
     <para>
      In practice, each variant node is associated with a triple of class,
      type, value, corresponding to the variant mechanism of Z39.50.
     </para>
     <para>
      In practice, each variant node is associated with a triple of class,
      type, value, corresponding to the variant mechanism of Z39.50.
     </para>
-
+    
    </sect2>
    </sect2>
-
+   
    <sect2>
     <title>Data Elements</title>
    <sect2>
     <title>Data Elements</title>
-
+    
     <para>
      Data nodes have no children (they are always leaf nodes in the record
      tree).
     </para>
     <para>
      Data nodes have no children (they are always leaf nodes in the record
      tree).
     </para>
-
-    <note>
-     <para>
-      FIXME! Documentation needs extension here about types of nodes - numerical,
-      textual, etc., plus the various types of inclusion notes.
-     </para>
-    </note>
+    
+    <!--
+    FIXME! Documentation needs extension here about types of nodes - numerical,
+    textual, etc., plus the various types of inclusion notes.
+   </para>
+    -->
     
    </sect2>
     
    </sect2>
-
+   
   </sect1>
   </sect1>
-
+  
   <sect1 id="data-model">
    <title>Configuring Your Data Model</title>
   <sect1 id="data-model">
    <title>Configuring Your Data Model</title>
-
+   
    <para>
     The following sections describe the configuration files that govern
     the internal management of data records. The system searches for the files
    <para>
     The following sections describe the configuration files that govern
     the internal management of data records. The system searches for the files
      or all of the following:
     </para>
 
      or all of the following:
     </para>
 
-    <para>
+    <!--
      FIXME - Need a diagram here, or a simple explanation how it all hangs together -H
      FIXME - Need a diagram here, or a simple explanation how it all hangs together -H
-    </para>
+    -->
 
     <para>
 
 
     <para>
 
 
       <listitem>
        <para>
 
       <listitem>
        <para>
-        The Tag set (again, this can consist of several different sets).
+        The tag set (again, this can consist of several different sets).
         This is used when reading the records from a file, to recognize the
         different tags, and when transmitting the record to the client -
         mapping the tags to their numerical representation, if they are
         known.
        </para>
       </listitem>
         This is used when reading the records from a file, to recognize the
         different tags, and when transmitting the record to the client -
         mapping the tags to their numerical representation, if they are
         known.
        </para>
       </listitem>
-
+      
       <listitem>
        <para>
         The variant set which is used in the profile. This provides a
       <listitem>
        <para>
         The variant set which is used in the profile. This provides a
 
     <para>
      Generally, the files are simple ASCII files, which can be maintained
 
     <para>
      Generally, the files are simple ASCII files, which can be maintained
-     using any text editor. Blank lines, and lines beginning with a (&num;) are
-     ignored. Any characters on a line followed by a (&num;) are also ignored.
+     using any text editor. Blank lines, and lines beginning with a (#) are
+     ignored. Any characters on a line followed by a (#) are also ignored.
      All other lines contain <emphasis>directives</emphasis>, which provide
      some setting or value to the system.
      Generally, settings are characterized by a single
      All other lines contain <emphasis>directives</emphasis>, which provide
      some setting or value to the system.
      Generally, settings are characterized by a single
     
    </sect2>
    
     
    </sect2>
    
-   <sect2>
+   <sect2 id="abs-file">
     <title>The Abstract Syntax (.abs) Files</title>
     
     <para>
     <title>The Abstract Syntax (.abs) Files</title>
     
     <para>
     <para>
      The file may contain the following directives:
     </para>
     <para>
      The file may contain the following directives:
     </para>
-
+    
     <para>
      <variablelist>
     <para>
      <variablelist>
-
+      
       <varlistentry>
       <varlistentry>
-       <term>name <emphasis>symbolic-name</emphasis></term>
+       <term>name <replaceable>symbolic-name</replaceable></term>
        <listitem>
         <para>
          (m) This provides a shorthand name or
        <listitem>
         <para>
          (m) This provides a shorthand name or
        </listitem>
       </varlistentry>
       <varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>reference <emphasis>OID-name</emphasis></term>
+       <term>reference <replaceable>OID-name</replaceable></term>
        <listitem>
         <para>
          (m) The reference name of the OID for the profile.
          The reference names can be found in the <emphasis>util</emphasis>
        <listitem>
         <para>
          (m) The reference name of the OID for the profile.
          The reference names can be found in the <emphasis>util</emphasis>
-         module of <emphasis>YAZ</emphasis>.
+         module of YAZ.
         </para>
        </listitem>
       </varlistentry>
       <varlistentry>
         </para>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>attset <emphasis>filename</emphasis></term>
+       <term>attset <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (m) The attribute set that is used for
        <listitem>
         <para>
          (m) The attribute set that is used for
        </listitem>
       </varlistentry>
       <varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>tagset <emphasis>filename</emphasis></term>
+       <term>tagset <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (o) The tag set (if any) that describe
        <listitem>
         <para>
          (o) The tag set (if any) that describe
        </listitem>
       </varlistentry>
       <varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>varset <emphasis>filename</emphasis></term>
+       <term>varset <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (o) The variant set used in the profile.
        <listitem>
         <para>
          (o) The variant set used in the profile.
        </listitem>
       </varlistentry>
       <varlistentry>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>maptab <emphasis>filename</emphasis></term>
+       <term>maptab <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (o,r) This points to a
          conversion table that might be used if the client asks for the record
          in a different schema from the native one.
         </para>
        <listitem>
         <para>
          (o,r) This points to a
          conversion table that might be used if the client asks for the record
          in a different schema from the native one.
         </para>
-       </listitem></varlistentry>
+       </listitem>
+      </varlistentry>
       <varlistentry>
       <varlistentry>
-       <term>marc <emphasis>filename</emphasis></term>
+       <term>marc <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (o) Points to a file containing parameters
        <listitem>
         <para>
          (o) Points to a file containing parameters
-         for representing the record contents in the ISO2709 syntax. Read the
-         description of the MARC representation facility below.
+         for representing the record contents in the ISO2709 syntax.
+         Read the description of the MARC representation facility below.
         </para>
         </para>
-       </listitem></varlistentry>
+       </listitem>
+      </varlistentry>
       <varlistentry>
       <varlistentry>
-       <term>esetname <emphasis>name filename</emphasis></term>
+       <term>esetname <replaceable>name filename</replaceable></term>
        <listitem>
         <para>
          (o,r) Associates the
        <listitem>
         <para>
          (o,r) Associates the
          given in place of the filename, this corresponds to a null mapping for
          the given element set name.
         </para>
          given in place of the filename, this corresponds to a null mapping for
          the given element set name.
         </para>
-       </listitem></varlistentry>
+       </listitem>
+      </varlistentry>
       <varlistentry>
       <varlistentry>
-       <term>any <emphasis>tags</emphasis></term>
+       <term>any <replaceable>tags</replaceable></term>
        <listitem>
         <para>
          (o) This directive specifies a list of attributes
        <listitem>
         <para>
          (o) This directive specifies a list of attributes
          provides an efficient way of supporting free-text searching across all
          elements. However, it does increase the size of the index
          significantly. The attributes can be qualified with a structure, as in
          provides an efficient way of supporting free-text searching across all
          elements. However, it does increase the size of the index
          significantly. The attributes can be qualified with a structure, as in
-         the <emphasis>elm</emphasis> directive below.
+         the <replaceable>elm</replaceable> directive below.
         </para>
         </para>
-       </listitem></varlistentry>
+       </listitem>
+      </varlistentry>
       <varlistentry>
       <varlistentry>
-       <term>elm <emphasis>path name attributes</emphasis></term>
+       <term>elm <replaceable>path name attributes</replaceable></term>
        <listitem>
         <para>
          (o,r) Adds an element to the abstract record syntax of the schema.
        <listitem>
         <para>
          (o,r) Adds an element to the abstract record syntax of the schema.
-         The <emphasis>path</emphasis> follows the
+         The <replaceable>path</replaceable> follows the
          syntax which is suggested by the Z39.50 document - that is, a sequence
          syntax which is suggested by the Z39.50 document - that is, a sequence
-         of tags separated by slashes (/). Each tag is given as a
+         of tags separated by slashes (&#x2f;). Each tag is given as a
          comma-separated pair of tag type and -value surrounded by parenthesis.
          comma-separated pair of tag type and -value surrounded by parenthesis.
-         The <emphasis>name</emphasis> is the name of the element, and
-         the <emphasis>attributes</emphasis>
+         The <replaceable>name</replaceable> is the name of the element, and
+         the <replaceable>attributes</replaceable>
          specifies which attributes to use when indexing the element in a
          comma-separated list.
          A ! in place of the attribute name is equivalent to
          specifying an attribute name identical to the element name.
          A - in place of the attribute name
          specifies that no indexing is to take place for the given element.
          specifies which attributes to use when indexing the element in a
          comma-separated list.
          A ! in place of the attribute name is equivalent to
          specifying an attribute name identical to the element name.
          A - in place of the attribute name
          specifies that no indexing is to take place for the given element.
-         The attributes can be qualified with <emphasis>field
-          types</emphasis> to specify which
+         The attributes can be qualified with <replaceable>field
+          types</replaceable> to specify which
          character set should govern the indexing procedure for that field.
          The same data element may be indexed into several different
          fields, using different character set definitions.
          See the <xref linkend="field-structure-and-character-sets"/>.
          character set should govern the indexing procedure for that field.
          The same data element may be indexed into several different
          fields, using different character set definitions.
          See the <xref linkend="field-structure-and-character-sets"/>.
-         The default field type is "w" for <emphasis>word</emphasis>.
+         The default field type is <literal>w</literal> for
+         <emphasis>word</emphasis>.
         </para>
         </para>
-       </listitem></varlistentry>
+       </listitem>
+      </varlistentry>
+      
       <varlistentry>
       <varlistentry>
-       <term>encoding <emphasis>encodingname</emphasis></term>
+       <term>xelm <replaceable>xpath attributes</replaceable></term>
+       <listitem>
+        <para>
+         Specifies indexing for record nodes given by
+         <replaceable>xpath</replaceable>. Unlike directive
+         elm, this directive allows you to index attribute
+         contents. The <replaceable>xpath</replaceable> uses
+         a syntax similar to XPath. The <replaceable>attributes</replaceable>
+         have same syntax and meaning as directive elm, except that operator
+         ! refers to the nodes selected by <replaceable>xpath</replaceable>.
+         <!--
+         xelm   /         !:w                 default index
+         xelm   //        !:w                 additional index
+         xelm   /gils/title/@att    myatt:w   index attribute @att in myatt
+         xelm   title/@att          myatt:w   same meaning.
+         -->
+        </para>
+       </listitem>
+      </varlistentry>
+      
+      <varlistentry>
+       <term>encoding <replaceable>encodingname</replaceable></term>
        <listitem>
         <para>
          This directive specifies character encoding for external records.
          For records such as XML that specifies encoding within the
          file via a header this directive is ignored.
          If neither this directive is given, nor an encoding is set
        <listitem>
         <para>
          This directive specifies character encoding for external records.
          For records such as XML that specifies encoding within the
          file via a header this directive is ignored.
          If neither this directive is given, nor an encoding is set
-         within external records, ISO-8859-1 encoding is assmed.
+         within external records, ISO-8859-1 encoding is assumed.
          </para>
        </listitem>
       </varlistentry>
       <varlistentry>
          </para>
        </listitem>
       </varlistentry>
       <varlistentry>
-       <term>xpath <emphasis>enable/disable</emphasis></term>
+       <term>xpath <literal>enable</literal>/<literal>disable</literal></term>
        <listitem>
         <para>
          If this directive is followed by <literal>enable</literal>,
        <listitem>
         <para>
          If this directive is followed by <literal>enable</literal>,
         </para>
        </listitem>
       </varlistentry>
         </para>
        </listitem>
       </varlistentry>
+
+      <!-- Adam's version 
+      <varlistentry>
+       <term>systag <replaceable>systemtag</replaceable> <replaceable>element</replaceable></term>
+       <listitem>
+        <para>
+         This directive maps system information to an element during
+         retrieval. This information is dynamically created. The
+         following system tags are defined
+         <variablelist>
+          <varlistentry>
+           <term>size</term>
+           <listitem>
+            <para>
+             Size of record in bytes. By default this
+             is mapped to element <literal>size</literal>.
+            </para>
+           </listitem>
+          </varlistentry>
+
+          <varlistentry>
+           <term>rank</term>
+           <listitem>
+            <para>
+             Score/rank of record. By default this
+             is mapped to element <literal>rank</literal>.
+             If no score was calculated for the record (non-ranked
+             searched) search this directive is ignored.
+            </para>
+           </listitem>
+          </varlistentry>
+          
+          <varlistentry>
+           <term>sysno</term>
+           <listitem> 
+            <para>
+             Zebra's system number (record ID) for the
+             record. By default this is mapped to element
+             <literal>localControlNumber</literal>.
+            </para>
+           </listitem>
+          </varlistentry>
+         </variablelist>
+         If you do not want a particular system tag to be applied,
+         then set the resulting element to something undefined in the
+         abs file (such as <literal>none</literal>).
+        </para>
+       </listitem>
+      </varlistentry>
+      -->
+
+      <!-- Mike's version -->
+      <varlistentry>
+       <term>
+        systag
+        <replaceable>systemTag</replaceable>
+        <replaceable>actualTag</replaceable>
+       </term>
+       <listitem>
+       <para>
+        Specifies what information, if any, Zebra should
+        automatically include in retrieval records for the 
+        ``system fields'' that it supports.
+        <replaceable>systemTag</replaceable> may
+        be any of the following:
+        <variablelist>
+         <varlistentry>
+          <term><literal>rank</literal></term>
+          <listitem><para>
+           An integer indicating the relevance-ranking score
+           assigned to the record.
+          </para></listitem>
+         </varlistentry>
+         <varlistentry>
+          <term><literal>sysno</literal></term>
+          <listitem><para>
+           An automatically generated identifier for the record,
+           unique within this database.  It is represented by the
+           <literal>&lt;localControlNumber&gt;</literal> element in
+           XML and the <literal>(1,14)</literal> tag in GRS-1.
+          </para></listitem>
+         </varlistentry>
+         <varlistentry>
+          <term><literal>size</literal></term>
+          <listitem><para>
+           The size, in bytes, of the retrieved record.
+          </para></listitem>
+         </varlistentry>
+        </variablelist>
+       </para>
+       <para>
+        The <replaceable>actualTag</replaceable> parameter may be
+        <literal>none</literal> to indicate that the named element
+        should be omitted from retrieval records.
+       </para>
+       </listitem>
+      </varlistentry>
      </variablelist>
     </para>
     
      </variablelist>
     </para>
     
       esetname G gils-g.est
       esetname F @
 
       esetname G gils-g.est
       esetname F @
 
-      elm (1,10)              rank                        -
-      elm (1,12)              url                         -
-      elm (1,14)              localControlNumber     Local-number
-      elm (1,16)              dateOfLastModification Date/time-last-modified
-      elm (2,1)               title                       w:!,p:!
-      elm (4,1)               controlIdentifier      Identifier-standard
-      elm (2,6)               abstract               Abstract
-      elm (4,51)              purpose                     !
-      elm (4,52)              originator                  - 
-      elm (4,53)              accessConstraints           !
-      elm (4,54)              useConstraints              !
-      elm (4,70)              availability                -
-      elm (4,70)/(4,90)       distributor                 -
-      elm (4,70)/(4,90)/(2,7) distributorName             !
-      elm (4,70)/(4,90)/(2,10 distributorOrganization     !
-      elm (4,70)/(4,90)/(4,2) distributorStreetAddress    !
-      elm (4,70)/(4,90)/(4,3) distributorCity             !
+      elm (1,10)               rank                        -
+      elm (1,12)               url                         -
+      elm (1,14)               localControlNumber     Local-number
+      elm (1,16)               dateOfLastModification Date/time-last-modified
+      elm (2,1)                title                       w:!,p:!
+      elm (4,1)                controlIdentifier      Identifier-standard
+      elm (2,6)                abstract               Abstract
+      elm (4,51)               purpose                     !
+      elm (4,52)               originator                  - 
+      elm (4,53)               accessConstraints           !
+      elm (4,54)               useConstraints              !
+      elm (4,70)               availability                -
+      elm (4,70)/(4,90)        distributor                 -
+      elm (4,70)/(4,90)/(2,7)  distributorName             !
+      elm (4,70)/(4,90)/(2,10) distributorOrganization     !
+      elm (4,70)/(4,90)/(4,2)  distributorStreetAddress    !
+      elm (4,70)/(4,90)/(4,3)  distributorCity             !
      </screen>
 
     </para>
      </screen>
 
     </para>
     <title>The Attribute Set (.att) Files</title>
 
     <para>
     <title>The Attribute Set (.att) Files</title>
 
     <para>
-     This file type describes the <emphasis>Use</emphasis> elements of
+     This file type describes the <replaceable>Use</replaceable> elements of
      an attribute set. 
      It contains the following directives. 
     </para>
      an attribute set. 
      It contains the following directives. 
     </para>
     <para>
      <variablelist>
       <varlistentry>
     <para>
      <variablelist>
       <varlistentry>
-       <term>name <emphasis>symbolic-name</emphasis></term>
+       <term>name <replaceable>symbolic-name</replaceable></term>
        <listitem>
         <para>
          (m) This provides a shorthand name or
        <listitem>
         <para>
          (m) This provides a shorthand name or
         </para>
        </listitem></varlistentry>
       <varlistentry>
         </para>
        </listitem></varlistentry>
       <varlistentry>
-       <term>reference <emphasis>OID-name</emphasis></term>
+       <term>reference <replaceable>OID-name</replaceable></term>
        <listitem>
         <para>
          (m) The reference name of the OID for
          the attribute set.
        <listitem>
         <para>
          (m) The reference name of the OID for
          the attribute set.
-         The reference names can be found in the <emphasis>util</emphasis>
-         module of <emphasis>YAZ</emphasis>.
+         The reference names can be found in the <replaceable>util</replaceable>
+         module of <replaceable>YAZ</replaceable>.
         </para>
        </listitem></varlistentry>
       <varlistentry>
         </para>
        </listitem></varlistentry>
       <varlistentry>
-       <term>include <emphasis>filename</emphasis></term>
+       <term>include <replaceable>filename</replaceable></term>
        <listitem>
         <para>
          (o,r) This directive is used to
          include another attribute set as a part of the current one. This is
          used when a new attribute set is defined as an extension to another
          set. For instance, many new attribute sets are defined as extensions
        <listitem>
         <para>
          (o,r) This directive is used to
          include another attribute set as a part of the current one. This is
          used when a new attribute set is defined as an extension to another
          set. For instance, many new attribute sets are defined as extensions
-         to the <emphasis>bib-1</emphasis> set.
+         to the <replaceable>bib-1</replaceable> set.
          This is an important feature of the retrieval
          system of Z39.50, as it ensures the highest possible level of
          interoperability, as those access points of your database which are
          This is an important feature of the retrieval
          system of Z39.50, as it ensures the highest possible level of
          interoperability, as those access points of your database which are
        </listitem></varlistentry>
       <varlistentry>
        <term>att
        </listitem></varlistentry>
       <varlistentry>
        <term>att
-        <emphasis>att-value att-name &lsqb;local-value&rsqb;</emphasis></term>
+        <replaceable>att-value att-name [local-value]</replaceable></term>
        <listitem>
         <para>
          (o,r) This
          repeatable directive introduces a new attribute to the set. The
          attribute value is stored in the index (unless a
        <listitem>
         <para>
          (o,r) This
          repeatable directive introduces a new attribute to the set. The
          attribute value is stored in the index (unless a
-         <emphasis>local-value</emphasis> is
+         <replaceable>local-value</replaceable> is
          given, in which case this is stored). The name is used to refer to the
          given, in which case this is stored). The name is used to refer to the
-         attribute from the <emphasis>abstract syntax</emphasis>. 
+         attribute from the <replaceable>abstract syntax</replaceable>. 
         </para>
        </listitem></varlistentry>
      </variablelist>
         </para>
        </listitem></varlistentry>
      </variablelist>
        </listitem></varlistentry>
       <varlistentry>
        <term>simpleElement
        </listitem></varlistentry>
       <varlistentry>
        <term>simpleElement
-        <emphasis>path &lsqb;'variant' variant-request&rsqb;</emphasis></term>
+        <emphasis>path ['variant' variant-request]</emphasis></term>
        <listitem>
         <para>
          (o,r) This corresponds to a simple element request
        <listitem>
         <para>
          (o,r) This corresponds to a simple element request
      is assumed by the MARC family in Z39.50.
     </para>
 
      is assumed by the MARC family in Z39.50.
     </para>
 
-    <para>
+    <!--
      <emphasis>NOTE: FIXME! The schema-mapping functions are so far limited to a
       straightforward mapping of elements. This should be extended with
       mechanisms for conversions of the element contents, and conditional
       mappings of elements based on the record contents.</emphasis>
      <emphasis>NOTE: FIXME! The schema-mapping functions are so far limited to a
       straightforward mapping of elements. This should be extended with
       mechanisms for conversions of the element contents, and conditional
       mappings of elements based on the record contents.</emphasis>
-    </para>
+    -->
 
     <para>
      These are the directives of the schema mapping file format:
 
     <para>
      These are the directives of the schema mapping file format:
      header of the record.
     </para>
 
      header of the record.
     </para>
 
-    <para>
-     <emphasis>NOTE: FIXME! This will be described better. We're in the process of
+    <!--
+     NOTE: FIXME! This will be described better. We're in the process of
       re-evaluating and most likely changing the way that MARC records are
       handled by the system.</emphasis>
       re-evaluating and most likely changing the way that MARC records are
       handled by the system.</emphasis>
-    </para>
+    -->
 
    </sect2>
 
 
    </sect2>
 
 
           <listitem>
            <para>
 
           <listitem>
            <para>
-            Curly braces &lcub;&rcub; may be used to enclose ranges of single
+            Curly braces {} may be used to enclose ranges of single
             characters (possibly using the escape convention described in the
             characters (possibly using the escape convention described in the
-            preceding point), eg. &lcub;a-z&rcub; to introduce the
+            preceding point), eg. {a-z} to introduce the
             standard range of ASCII characters.
             Note that the interpretation of such a range depends on
             the concrete representation in your local, physical character set.
             standard range of ASCII characters.
             Note that the interpretation of such a range depends on
             the concrete representation in your local, physical character set.
        is used to show the hierarchical structure of the record. All
        "GRS" type records support both the GRS-1 and SUTRS
        representations.
        is used to show the hierarchical structure of the record. All
        "GRS" type records support both the GRS-1 and SUTRS
        representations.
-       FIXME - What is SUTRS - should be expanded here
+       <!-- FIXME - What is SUTRS - should be expanded here -->
       </para>
      </listitem>
 
       </para>
      </listitem>
 
        abstract syntaxes can be mapped to the SOIF format, although nested
        elements are represented by concatenation of the tag names at each
        level.
        abstract syntaxes can be mapped to the SOIF format, although nested
        elements are represented by concatenation of the tag names at each
        level.
-       FIXME - Is this used anywhere ? -H
+       <!-- FIXME - Is this used anywhere ? -H -->
       </para>
      </listitem>
 
       </para>
      </listitem>