dams Tue Feb 13 01:16:50 2001 EDT Modified files: /phpdoc/fr/functions yaz.xml Log: Added new functions
Index: phpdoc/fr/functions/yaz.xml diff -u phpdoc/fr/functions/yaz.xml:1.9 phpdoc/fr/functions/yaz.xml:1.10 --- phpdoc/fr/functions/yaz.xml:1.9 Wed Feb 7 01:13:38 2001 +++ phpdoc/fr/functions/yaz.xml Tue Feb 13 01:16:49 2001 @@ -8,7 +8,7 @@ Cette extension offre à PHP l'interface avec les produits <productname>YAZ</productname>, qui implémentent le protocole Z39.50. Avec cette extension, vous pouvez facilement implémenter - un client Z39.50 qui fouille des serveurs Z39.50 en paralelle. + un client Z39.50 qui analyse ou scanne des serveurs Z39.50 en paralelle. </para> <para> <productname>YAZ</productname> est disponible à <ulink @@ -32,7 +32,7 @@ </para> <para> <informalexample> - <programlisting role="php"> + <programlisting> gunzip -c yaz-1.6.tar.gz|tar xf - gunzip -c php-4.0.X.tar.gz|tar xf - cd yaz-1.6 @@ -50,17 +50,15 @@ <sect1 id="yaz.example"> <title>Exemple</title> <para> - PHP/YAZ conserve les connexions aux serveurs. Un entier positif représente - l'ID d'une connexion particulière. + PHP/YAZ conserve les connexions aux serveurs. Un entier positif + représente l'ID d'une connexion particulière. </para> <para> Le script ci-dessous montre comment effectuer une recherche paralelle. Lorsqu'il est appelé sans paramètre, ce script affiche la requête. Sinon, il effectue la recherche sur les serveurs. - </para> - <para> <example> - <title>YAZ</title> + <title>Recherche paralelle, utilisant YAZ</title> <programlisting role="php"> <?php $num_hosts = count ($host); @@ -75,7 +73,7 @@ <input type="checkbox" checked="1" name="host[]" value="z3950.bell-labs.com/books"> BELL Labs Library - <br> + <br> RPN Query: <input type="text" size="30" name="term"> <input type="submit" name="action" value="Search"> @@ -149,9 +147,11 @@ </funcprototype> </funcsynopsis> <para> - <function>yaz_close</function> ferme une connexion à un hôte YAZ. - L'application ne peut plus utiliser l'identifiant de connexoin - <parameter>id</parameter>. + <function>yaz_close</function> ferme une connexion à un + hôte YAZ. L'application ne pourra plus utiliser + l'identifiant de connexion <parameter>id</parameter>. + <parameter>id</parameter> est un identifiant d'hôte, retourné + par <function>yaz_connect</function>. </para> </refsect1> </refentry> @@ -167,14 +167,20 @@ <funcsynopsis> <funcprototype> <funcdef>int <function>yaz_connect</function></funcdef> - <paramdef>string <parameter>zurl</parameter></paramdef> + <paramdef>string + <parameter>zurl</parameter> + </paramdef> + <paramdef>string + <parameter><optional>authentication</optional></parameter> + </paramdef> </funcprototype> </funcsynopsis> <para> - <function>yaz_connect</function> prépare une connexion à un serveur - Z39.50 target. <parameter>zurl</parameter> est de la forme - host[:port][/database]. Si port est omis, 210 est utilisé. Si - database est omis, Default est utilisé. Cette fonction n'est pas bloquante, + <function>yaz_connect</function> prépare une connexion + à un serveur Z39.50. <parameter>zurl</parameter> est de la forme + "<literal>host[:port][/database]</literal>". Si port est omis, 210 est + utilisé. Si <literal>database</literal> est omis, +<literal>default</literal> + est utilisé. <function>yaz_connect</function> n'est pas bloquante, et ne tente pas d'établir une socket. En fait, elle ne fait que préparer la connexion pour exécution ultérieure par <function>yaz_wait</function>. @@ -273,10 +279,10 @@ </funcsynopsis> <para> <function>yaz_range</function> est à utiliser en conjonction - avec <function>yaz_search</function> pour spécifier le type - d'éléments à lire. La pluspart des serveurs - supporte <literal>F</literal> (full, tous), et <literal>B</literal> - (brief, bref). + avec <function>yaz_search</function> et <function>yaz_present</function> + pour spécifier le type d'éléments à lire. + La plupart des serveurs supporte <literal>F</literal> (full, tous), et + <literal>B</literal> (brief, bref). </para> <para> <function>yaz_range</function> retourne <literal>TRUE</literal> en @@ -284,6 +290,29 @@ </para> </refsect1> </refentry> + <refentry id="function.yaz-present"> + <refnamediv> + <refname>yaz_present</refname> + <refpurpose> + Prépare à la lecture (Z39.50 present). + </refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>yaz_present</function></funcdef> + <void/> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_present</function> prépare PHP à la lecture des + résultats, après une recherche. <function>yaz_range</function> + doit être appelée avant celle-ci pour spécifier la plage + de résultat à lire. + </para> + </refsect1> + </refentry> <refentry id="function.yaz-range"> <refnamediv> <refname>yaz_range</refname> @@ -311,7 +340,8 @@ et <parameter>number</parameter> vaudra 10. </para> <para> - Retourne <literal>TRUE</literal> en cas de succès; <literal>FALSE</literal> en cas d'erreur. + <function>yaz_range</function> retourne <literal>TRUE</literal> en + cas de succès; <literal>FALSE</literal> en cas d'erreur. </para> </refsect1> </refentry> @@ -370,23 +400,25 @@ représente le type de requête : seul RPN est supporté actuellement, et dans ce cas, le troisième argument est un préfixe de notation de requête utilisé par YAZ. - Comme pour <function>yaz_connect</function>, <function>yaz_search</function> n'est pas - bloquante, et ne fait que préparer la recherche pour exécution - ultérieure, avec <function>yaz_wait</function>. + Comme pour <function>yaz_connect</function>, <function>yaz_search</function> + n'est pas bloquante, et ne fait que préparer la recherche pour + exécution ultérieure, avec <function>yaz_wait</function>. </para> </refsect1> <refsect1> <title>Requêtes RPN</title> <para> - Les requêtes RPN sont des représentation textuelles des requêtes - de type Type-1, comme définit dans le standard Z39.50. Cependant, - dans la représentation textuelle utilisée par YAZ, une notation - à préfixage est utilisée, c'est à dire que l'opérateur précéde - l'opérande. La chaîne de requête est une séquence de mots - reservés, où les espaces sont ignorés, à moins qu'ils n'ai été - mis entre guillemets doubles. Les mots reservés qui commencent par - un arobase (<literal>@</literal>) sont considérés comme des opérateurs - et traités comme tels. + Les requêtes RPN sont des représentation textuelles des + requêtes de type Type-1, comme définit dans le standard + Z39.50. Cependant, dans la représentation textuelle utilisée + par YAZ, une notation à préfixage est utilisée, + c'est à dire que l'opérateur précéde + l'opérande. La chaîne de requête est une + séquence de mots reservés, où les espaces sont + ignorés, à moins qu'ils n'ai été + mis entre guillemets doubles. Les mots reservés qui commencent + par un arobase (<literal>@</literal>) sont considérés + comme des opérateurs et traités comme tels. </para> <table> <title>Opérateurs RPN</title> @@ -448,13 +480,14 @@ <screen>@attr 1=4 php</screen> </informalexample> L'attribut est de type 1 (Bib-1 use), sa valeur est 4 (Title, titre) : - cette requête recherche les documents où le mot "php" est dans le titre. + cette requête recherche les documents où le mot "php" + est dans le titre. </para> <para> <informalexample> -<screen>@attrset gils @and @attr 1=4 php @attr 1=1003 "Rasmus Lerdorf"</screen> + <screen>@attrset gils @and @attr 1=4 php @attr 1=1003 "Rasmus Lerdorf"</screen> </informalexample> - Cette requête utilise tout le jeu d'attrbuts GILS. Elle recherche + Cette requête utilise tout le jeu d'attributs GILS. Elle recherche les documents dont le titre contient "php", et qui contiennent le nom "Rasmus Lerdorf" comme auteur. </para> @@ -479,30 +512,352 @@ <para> <function>yaz_syntax</function> est utilisée conjointement avec <function>yaz_search</function> pour spécifier la méthode - de lecture des lignes. + de lecture des lignes. La syntaxe est spécifiée comme un OID + (Identifiant d'Objet), en notation brute, séparée par des + points (i.e. <literal>1.2.840.10003.5.10</literal>), ou bien avec une + des valeurs prédéfinies : sutrs, usmarc, grs1, xml, etc... + <function>yaz_syntax</function> doit être utilisée en +conjonction avec + <function>yaz_search</function> et <function>yaz_present</function> + pour spécifier la méthode de lecture des résultats. </para> </refsect1> </refentry> + <refentry id="function.yaz-scan"> + <refnamediv> + <refname>yaz_scan</refname> + <refpurpose>Prépare un scan</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>yaz_scan</function></funcdef> + <paramdef>int <parameter>id</parameter></paramdef> + <paramdef>string <parameter>type</parameter></paramdef> + <paramdef>string <parameter>startterm</parameter></paramdef> + <paramdef>array + <parameter><optional>flags</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_scan</function> prépare une requête "Z39.50 Scan +Request". + <parameter>id</parameter> spécifie l'hôte cible. Le point de +départ + est donné avec <parameter>startterm</parameter>. La forme de +spécification + du point de départ est donné par <parameter>type</parameter>. +Actuellement, + le type <literal>rpn</literal> est supporté. Le paramètre optionnel + <parameter>flags</parameter> donne des informations supplémentaires pour + contrôler le comportement de la requête de scan. Actuellement, trois +index + sont lus dans ce paramètre : <literal>number</literal> (nombre de termes + requis), <literal>position</literal> (position préférée du +terme) et + <literal>stepSize</literal> (taille du pas préferée). + Pour rééllement envoyer la requête de recherche à +l'hôte, et recevoir + la réponse, <function>yaz_wait</function> doit être appelée. +A la fin de + <function>yaz_wait</function>, <function>yaz_error</function> et + <function>yaz_scan_result</function> auront les résultats. + </para> + <para> + La syntaxe de <parameter>startterm</parameter> est similaire aux requêtes + RPN, décrites dans <function>yaz_search</function>. + <parameter>startterm</parameter> est constitué de zéro ou plus + spécifications, avec les opérateurs <literal>@attr</literal>, +suivi par + exactement un token. + </para> + <para> + <example> + <title>Fonction PHP qui scanne les titres</title> + <programlisting> + function scan_titles($id, $starterm) { + yaz_scan($id,"rpn", "@attr 1=4 " . $starterm); + yaz_wait(); + $errno = yaz_errno($id); + if ($errno == 0) { + $ar = yaz_scan_result($id,&$options); + echo 'Scan ok; '; + $ar = yaz_scan_result($id, &$options); + while(list($key,$val)=each($options)) { + echo "$key = $val "; + } + echo '<br><table><tr><td>'; + while(list($key,list($k, $term, $tcount))=each($ar)) { + if (empty($k)) continue; + echo "<tr><td>$term</td><td>"; + echo $tcount; + echo "</td></tr>"; + } + echo '</table>'; + } else { + echo "Echec du scan. Erreur: " . yaz_error($id) . "<br>"; + } + } + </programlisting> + </example> + </para> + </refsect1> + </refentry> + <refentry id="function.yaz-scan-result"> + <refnamediv> + <refname>yaz_scan_result</refname> + <refpurpose>Retourne le résultat d'un scan</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>array <function>yaz_scan_result</function></funcdef> + <paramdef>int <parameter>id</parameter></paramdef> + <paramdef>array & + <parameter><optional>result</optional></parameter> + </paramdef> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_scan_result</function> retourne un tableau contenant + les termes recu de l'hôte <parameter>id</parameter>, lors + de la dernière requête de scan. Le tableau commence à +l'index 0. + Chaque valeur est une paire, où le premier élément est le +terme, + et le second est un compte de résultat. Si + <parameter>result</parameter> est fourni, il sera rempli avec + les informations générales de la requête de scan : + <literal>number</literal> (numbre d'entrée retournées), + <literal>stepsize</literal> (taille du pas), + <literal>position</literal> (position du terme), + <literal>status</literal> (Statut du Scan). + </para> + </refsect1> + </refentry> + <refentry id="function.yaz-ccl-conf"> + <refnamediv> + <refname>yaz_ccl_conf</refname> + <refpurpose>Configure l'analyseur CCL</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>yaz_ccl_conf</function></funcdef> + <paramdef>int <parameter>id</parameter></paramdef> + <paramdef>array <parameter>config</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_ccl_conf</function> configure l'analyseur CCL + de requete de l'hôte <parameter>id</parameter>, avec + les définitions de points d'accès (CCL qualifiers) et leur + équivalent en RPN. Pour cabler une requête spécifique vers un + appel RPN, utilisez <function>yaz_ccl_parse</function>. + Chaque index du tableau <parameter>config</parameter> est un + nom de champs CCL et la valeur correspondante contient une chaîne + spécifiant le code RPN. Ce code est une séquence de paires + "attribut-type, attribute-value". Les "attribut-type" et + "attribut-value" sont séparé par le signe égal +(<literal>=</literal>). + Chaque paire est séparé par un espace ("<literal>=</literal>"). + </para> + <para> + <example> + <title>Exemple de configuration CCL</title> + <simpara> + Dans l'exemple ci-dessous, l'analyseur CCL est configuré pour + supporter trois champs CCL : <literal>ti</literal>, <literal>au</literal> et + <literal>isbn</literal>. Chaque champs correspond à leur équivalent + équivalent BIB-1. On suppose que chaque variable <literal>$id</literal> +est + un hôte de destination. + </simpara> + <programlisting role="php"> +<?php + $field["ti"] = "1=4"; + $field["au"] = "1=1"; + $field["isbn"] = "1=7"; + yaz_ccl_conf($id,$field); +?< + </programlisting> + </example> + </para> + </refsect1> + </refentry> + <refentry id="function.yaz-ccl-parse"> + <refnamediv> + <refname>yaz_ccl_parse</refname> + <refpurpose>Appelle l'analyseur CCL</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>yaz_ccl_parse</function></funcdef> + <paramdef>int <parameter>id</parameter></paramdef> + <paramdef>string <parameter>query</parameter></paramdef> + <paramdef>array &<parameter>result</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_ccl_parse</function> appelle l'analyseyr CCL. + Il convertit une requête CCL FIND en une requête RPN qui peut +être + passée à <function>yaz_search</function> pour effectuer une +recherche. + Pour définir un champs CCL valide, utilisez la fonction + <function>yaz_ccl_conf</function> avant celle-ci. + Si la requête <parameter>query</parameter> a pu être convertie en + RPN, <function>yaz_ccl_parse</function> retourne <literal>TRUE</literal>, + et l'index <literal>rpn</literal> du tableau <parameter>result</parameter> + contient une requête RPN valide. Si la requête n'a pas pu être +convertie, + (pour n'importe quelle raison, comme syntaxe invalide, champs inconnu...), + <function>yaz_ccl_parse</function> retourne <literal>FALSE</literal>. + Trois index sont alors créé dans le tableau de résultat : + <literal>errorcode</literal> (code d'erreur CCL, un entier), + <literal>errorstring</literal> (message d'erreur CCL), et + <literal>errorpos</literal> position estimée de l'erreur dans la + requête (entier, position en nombre de caractères). + </para> + </refsect1> + </refentry> + <refentry id="function.yaz-itemorder"> + <refnamediv> + <refname>yaz_itemorder</refname> + <refpurpose> + Prépare une requête Z39.50 Item Order avec le package ILL-Request + </refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <funcsynopsis> + <funcprototype> + <funcdef>int <function>yaz_itemorder</function></funcdef> + <paramdef>array <parameter>args</parameter></paramdef> + </funcprototype> + </funcsynopsis> + <para> + <function>yaz_itemorder</function> prépare une requête de type +"Extended Services" + en utilisant le "Profile" avec "Use of Z39.50 Item Order Extended Service to + Transport ILL (Profile/1)" (Note du Traducteur : mailes moi de l'aide!). +Reportez vous + <ulink url="http://www.nlc-bnc.ca/iso/ill/stanprf.htm">ici</ulink> + ou aux + <ulink url="http://www.nlc-bnc.ca/iso/ill/document/standard/z-ill-1a.pdf"> + spécification</ulink>. + Le paramètre <parameter>args</parameter> doit être un tableau +associatif, + contenant les informations "Item Order" à envoyer. L'index du tableau est + le nom ASN.1 correspondant au tag path. Par exemple, le numéro ISBN sous + l'Item-ID est la clé item-id,ISBN. + </para> + <para> + Les paramètres de ILL-Request sont : + </para> + <literallayout> +protocol-version-num +transaction-id,initial-requester-id,person-or-institution-symbol,person +transaction-id,initial-requester-id,person-or-institution-symbol,institution +transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person +transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution +transaction-id,transaction-group-qualifier +transaction-id,transaction-qualifier +transaction-id,sub-transaction-qualifier +service-date-time,this,date +service-date-time,this,time +service-date-time,original,date +service-date-time,original,time +requester-id,person-or-institution-symbol,person +requester-id,person-or-institution-symbol,institution +requester-id,name-of-person-or-institution,name-of-person +requester-id,name-of-person-or-institution,name-of-institution +responder-id,person-or-institution-symbol,person +responder-id,person-or-institution-symbol,institution +responder-id,name-of-person-or-institution,name-of-person +responder-id,name-of-person-or-institution,name-of-institution +transaction-type +delivery-address,postal-address,name-of-person-or-institution,name-of-person +delivery-address,postal-address,name-of-person-or-institution,name-of-institution +delivery-address,postal-address,extended-postal-delivery-address +delivery-address,postal-address,street-and-number +delivery-address,postal-address,post-office-box +delivery-address,postal-address,city +delivery-address,postal-address,region +delivery-address,postal-address,country +delivery-address,postal-address,postal-code +delivery-address,electronic-address,telecom-service-identifier +delivery-address,electronic-address,telecom-service-addreess +billing-address,postal-address,name-of-person-or-institution,name-of-person +billing-address,postal-address,name-of-person-or-institution,name-of-institution +billing-address,postal-address,extended-postal-delivery-address +billing-address,postal-address,street-and-number +billing-address,postal-address,post-office-box +billing-address,postal-address,city +billing-address,postal-address,region +billing-address,postal-address,country +billing-address,postal-address,postal-code +billing-address,electronic-address,telecom-service-identifier +billing-address,electronic-address,telecom-service-addreess +ill-service-type +requester-optional-messages,can-send-RECEIVED +requester-optional-messages,can-send-RETURNED +requester-optional-messages,requester-SHIPPED +requester-optional-messages,requester-CHECKED-IN +search-type,level-of-service +search-type,need-before-date +search-type,expiry-date +search-type,expiry-flag +place-on-hold +client-id,client-name +client-id,client-status +client-id,client-identifier +item-id,item-type +item-id,call-number +item-id,author +item-id,title +item-id,sub-title +item-id,sponsoring-body +item-id,place-of-publication +item-id,publisher +item-id,series-title-number +item-id,volume-issue +item-id,edition +item-id,publication-date +item-id,publication-date-of-component +item-id,author-of-article +item-id,title-of-article +item-id,pagination +item-id,ISBN +item-id,ISSN +item-id,additional-no-letters +item-id,verification-reference-source +copyright-complicance +retry-flag +forward-flag +requester-note +forward-note + </literallayout> + <para> + Il y a quelques paramètres du package Extended Services Request + et ItemOrder : + </para> + <literallayout> +package-name +user-id +contact-name +contact-phone +contact-email +itemorder-item + </literallayout> + </refsect1> + </refentry> <refentry id="function.yaz-wait"> <refnamediv> <refname>yaz_wait</refname> - <refpurpose>Exécute une requête</refpurpose> + <refpurpose>Attend l'exécution d'une requête</refpurpose> </refnamediv> <refsect1> <title>Description</title> <funcsynopsis> <funcprototype> <funcdef>int <function>yaz_wait</function></funcdef> - <paramdef>int <parameter>id</parameter></paramdef> - <paramdef>string <parameter>syntax</parameter></paramdef> + <void/> </funcprototype> </funcsynopsis> <para> - <function>yaz_wait</function> exécute les requêtes préparée par les fonctions - <function>yaz_connect</function>, <function>yaz_search</function>. - <function>yaz_wait</function> fonctionne en mode bloquant. - <function>yaz_wait</function> se termine lorsque toutes les requêtes - se sont terminées (succès ou erreur). + <function>yaz_wait</function> exécute les requêtes + préparée par les fonctions + <function>yaz_search</function>, <function>yaz_present</function>, + <function>yaz_scan</function> et <function>yaz_itemorder</function>. + <function>yaz_wait</function> se termine lorsque tous les hôtes + ont terminé leurs requêtes (éventuellement en cas d'erreur). </para> </refsect1> </refentry>