dickmeiss               Thu Apr 22 08:06:04 2004 EDT

  Modified files:              
    /phpdoc/en/reference/yaz/functions  yaz-record.xml 
  Log:
  More details about yaz_record
  
http://cvs.php.net/diff.php/phpdoc/en/reference/yaz/functions/yaz-record.xml?r1=1.4&r2=1.5&ty=u
Index: phpdoc/en/reference/yaz/functions/yaz-record.xml
diff -u phpdoc/en/reference/yaz/functions/yaz-record.xml:1.4 
phpdoc/en/reference/yaz/functions/yaz-record.xml:1.5
--- phpdoc/en/reference/yaz/functions/yaz-record.xml:1.4        Sun Jun 15 11:21:05 
2003
+++ phpdoc/en/reference/yaz/functions/yaz-record.xml    Thu Apr 22 08:06:04 2004
@@ -1,45 +1,252 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.4 $ -->
+<!-- $Revision: 1.5 $ -->
 <!-- splitted from ./en/functions/yaz.xml, last change in rev 1.1 -->
   <refentry id="function.yaz-record">
-   <refnamediv>
-    <refname>yaz_record</refname>
-    <refpurpose>Returns a record</refpurpose>
-   </refnamediv>
-   <refsect1>
-    <title>Description</title>
-     <methodsynopsis>
-      <type>string</type><methodname>yaz_record</methodname>
-      <methodparam><type>resource</type><parameter>id</parameter></methodparam>
-      <methodparam><type>int</type><parameter>pos</parameter></methodparam>
-      <methodparam><type>string</type><parameter>type</parameter></methodparam>
-     </methodsynopsis>
-    <para>
-     Returns the record at position <parameter>pos</parameter> or an empty
-     string if no record exists at the given position.
-    </para>
-    <para>
-     The <function>yaz_record</function> function inspects a record in the
-     current result set at the position specified by parameter
-     <parameter>pos</parameter>. If no database record exists at the given
-     position an empty string is returned. The <parameter>type</parameter>
-     specifies the form of the returned record.
-    </para>
-    <para>
-     If type is <literal>"string"</literal> the record is
-     returned in a string representation suitable for printing
-     (for XML and SUTRS).
-     If <parameter>type</parameter> is <literal>"array"</literal>
-     the record is returned as an array representation (for structured
-     records).
-     If <parameter>type</parameter> is <literal>"raw"</literal> the
-     record is returned in its original raw form.
-    </para>
-    <para>
-     Records in a result set are numbered 1, 2, ... $hits where
-     $hits is the count returned by <function>yaz_hits</function>.
-    </para>
-   </refsect1>
+ <refnamediv>
+  <refname>yaz_record</refname>
+  <refpurpose>Returns a record</refpurpose>
+ </refnamediv>
+ <refsect1>
+  <title>Description</title>
+  <methodsynopsis>
+   <type>string</type><methodname>yaz_record</methodname>
+   <methodparam><type>resource</type><parameter>id</parameter></methodparam>
+   <methodparam><type>int</type><parameter>pos</parameter></methodparam>
+   <methodparam><type>string</type><parameter>type</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Returns the record at position <parameter>pos</parameter> or an empty
+   string if no record exists at the given position.
+  </para>
+  <para>
+   The <function>yaz_record</function> function inspects a record in the
+   current result set at the position specified by parameter
+   <parameter>pos</parameter>. If no database record exists at the given
+   position an empty string is returned. 
+  </para>
+  <para>
+   Record positions in a result set are numbered 1, 2, ... $hits where
+   $hits is the count returned by <function>yaz_hits</function>.
+  </para>
+  <para>
+   The <parameter>type</parameter> specifies the form of the
+   returned record.
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term><literal>string</literal></term>
+    <listitem>
+     <para>
+      The record is returned as a string for simple display.
+      In this mode, all MARC records are converted to a line-by-line format
+      since ISO2709 is hardly readable.
+      XML records and SUTRS are returned in their original format.
+      GRS-1 are returned in a (ugly) line-by-line format.
+     </para>
+     <para>
+      This format is suitable if records are to be displayed in a quick
+      way - for debugging - or because it is not feasible to perform
+      proper display.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><literal>xml</literal></term>
+    <listitem>
+     <para>
+      The record is returned as an XML string if possible.
+      In this mode, all MARC records are converted to 
+      <ulink url="&url.yaz-marcxml;">MARCXML</ulink>.
+      XML records and SUTRS are returned in their original format.
+      GRS-1 is not supported.
+     </para>
+     <para>
+      This format is similar to <literal>string</literal> except that
+      MARC records are converted to MARCXML
+     </para>
+     <para>
+      This format is suitable if records are processed by an XML parser
+      or XSLT processor afterwareds.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>raw</literal></term>
+    <listitem>
+     <para>
+      The record is returned as a string in its original form.
+      This type is suitable for MARC, XML and SUTRS. It does not
+      work for GRS-1.
+     </para>
+     <para>
+      MARC records are returned as a ISO2709 string. XML and SUTRS are
+      returned as strings.
+     </para>
+    </listitem>
+   </varlistentry>
+   
+   <varlistentry>
+    <term><literal>syntax</literal></term>
+    <listitem>
+     <para>
+      The syntax of the record is returned as a string, i.e.
+      <literal>USmarc</literal>, <literal>GRS-1</literal>,
+      <literal>XML</literal>, etc.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>database</literal></term>
+    <listitem>
+     <para>
+      The name of database associated with record at the position
+      is returned as a string.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>array</literal></term>
+    <listitem>
+     <para>
+      The record is returned as an array that reflects the GRS-1
+      structure. This type is suitable for MARC and GRS-1. XML, SUTRS
+      are not supported and if the actual record is XML or SUTRS an
+      empty string will be returned.
+     </para>
+     <para>
+      The array returned consists of a list corresponding to
+      each leaf/internal node of GRS-1. Each list item consists
+      a sub list with first element <emphasis>path</emphasis> and
+      <emphasis>data</emphasis> (if data is available).
+      </para>
+     <para>
+      The path which is a string holds a list of each tree component (of
+      the structured GRS-1 record) from root to leaf. Each component is
+      a tag type, tag value pair of the form
+      <literal>(</literal><replaceable>type</replaceable><literal>,</literal>
+      <replaceable>value</replaceable>
+     </para>
+     <para>
+      String tags normally has a corresponding tag type 3.
+      MARC can also be returned as an array (they are converted to
+      GRS-1 internally).
+     </para>
+    </listitem>
+   </varlistentry>
+   
+  </variablelist>
+
+  <note>
+   <para>
+    It is the application which is responsible for actually
+    ensuring that the records are returned from the Z39.50/SRW server
+    in the proper format. The type given only specifies a conversion
+    to take place on the client side (in PHP/YAZ).
+   </para>
+  </note>
+
+  <para>
+   Besides conversion of the transfer record to a string/array, PHP/YAZ
+   it is also possible to perform a character set conversion of the
+   record. Especially for USMARC/MARC21 that is recommended since
+   these are typically returned in the character set MARC-8 that is
+   not supported by browsers, etc. To specify a conversion, add
+   <literal>; charset=</literal><replaceable>from</replaceable><literal>,
+   </literal><replaceable>to</replaceable> where
+   <replaceable>from</replaceable> is the original character set 
+   of the record and <replaceable>to</replaceable> is the resulting character
+   set (as seen by PHP).
+  </para>
+  
+  <example>
+   <title>Array for GRS-1 record</title>
+   <para>
+    Consider GRS-1 record
+    <screen>
+(4,52)Robert M. Pirsig
+(4,70)
+      (4,90)
+            (2,7)Transworld Publishers, ltd.
+    </screen>
+    This record has two nodes at root level.
+    First element at root level is (4,52) 
+    [tag type 4, tag value 52], and has data 
+    <literal>Robert M. Pirsig</literal>. Second element at root level 
+    (4,70) has a subtree with a single element (4,90). (4,90) has
+    yet another sub tree (2,7) with data <literal>Transworld Publishers,
+     ltd.</literal>.
+   </para>
+   <para>
+    If this record is present at position $p, then
+    <programlisting role="php">
+$ar = yaz_record($id, $p, "array");
+print_r($ar);
+    </programlisting>
+    produces
+    <screen>
+ Array
+(
+    [0] => Array
+        (
+            [0] => (4,52)
+            [1] => Robert M. Pirsig
+        )
+    [1] => Array
+        (
+            [0] => (4,70)
+        )
+    [2] => Array
+        (
+            [0] => (4,70)(4,90)
+        )
+    [3] => Array
+        (
+            [0] => (4,70)(4,90)(2,7)
+            [1] => Transworld Publishers, ltd.
+        )
+)      
+    </screen>
+   </para>
+  </example>
+
+  <example>
+   <title>Working with MARCXML</title>
+   <para>
+    The following PHP snippet returns a MARC21/USMARC record as
+    MARCXML. The original record is returned in marc-8 (unknown
+    to most XML parsers), so we convert it to UTF-8 (which all 
+    XML parsers must support).
+    <programlisting role="php">
+     $rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
+    </programlisting>
+   </para>
+   <para>
+    The record <literal>$rec</literal> can be processed with
+    the <link linkend="ref.xslt">Sablotron XSLT</link> processor as follows:
+   </para>
+   <para>
+    <programlisting role="php">
+<![CDATA[ 
+$xslfile = 'display.xsl';
+$processor = xslt_create();
+$parms = array('/_xml' => $rec);
+$res = xslt_process($processor, 'arg:/_xml', $xslfile, NULL, $parms);
+xslt_free($processor);
+$res = preg_replace("'</?html[^>]*>'", '', $res);
+print $res;
+]]>
+    </programlisting>
+   </para>
+   <para>
+    For PHP5 the <link linkend="ref.xsl">XSL</link> extension can be
+    used instead of Sablotron XSLT.
+   </para>
+  </example>
+ </refsect1>
   </refentry>
 
 <!-- Keep this comment at the end of the file

Reply via email to