|  | 
 
 
 
  説明
   string yaz_record(resource $id, int$pos, string$type) 
  パラメータ
    
    
     
id
      
       yaz_connect が返す接続リソース。
      
pos
      
       レコードの位置。結果セット内の位置は 1, 2, ... $hits で表されます。
       ここで、$hits は yaz_hits が返す値です。
      
type
      
       typeは、返されるレコードの型を指定します。 注意: 
        
        Z39.50/SRW サーバーから適切な形式でレコードが返されたことを
        確認するのは、アプリケーション側の役目です。このパラメータは
        単にクライアント側(PHP/YAZ 内)での型変換についてのみ設定します。
       
 
       レコードを文字列/配列に変換することに加え、PHP/YAZ はレコードの
       文字セットを変換することも可能です。
       特に USMARC/MARC21 の場合に文字セット変換が推奨されます。なぜなら
       これらは一般的に結果を MARC-8 文字セットで返しますが、ブラウザでは
       この文字セットがサポートされていないからです。変換を指定するには、
       ; charset=from,
       to を追加します。
       from はレコードの元の文字セットで、
       to は結果の文字セット(PHP によって
       表示されるもの)です。 
       
        
string
         
          レコードは、単純な形式の文字列で返されます。
          このモードではすべての MARC レコードが ISO2709 の行単位
          フォーマットに変換されますが、これは非常に読みにくいものです。
          XML レコードおよび SUTRS は、本来のフォーマットのまま返されます。
          GRS-1 は(醜い)行単位フォーマットで返されます。
          
          このフォーマットが役に立つのは、結果を手っ取り早く表示したい場合 -
          デバッグ中など - の場合です。適切な形式で表示するのには適していません。
         
xml
         
          レコードは、可能ならば XML 文字列として返されます。
          このモードでは、すべての MARC レコードは
          » MARCXML に変換されます。
          XML レコードおよび SUTRS は、本来のフォーマットのままで返されます。
          GRS-1 はサポートしていません。
          
          このフォーマットは stringと似ていますが、
          MARC レコードが MARCXML に変換される点が違います。 
          このフォーマットは、レコードが XML パーサや XSLT プロセッサに
          渡される場合に役立ちます。
         
raw
         
          レコードは、その本来のフォーマットのままで返されます。
          MARC、XML および SUTRS で使用可能です。GRS-1 では動作しません。
          
          MARC レコードは ISO2709 文字列として返されます。XML および SUTRS
          は文字列として返されます。
         
syntax
         
          レコードの構文が文字列で返されます。たとえば
          USmarc、GRS-1、XMLなどです。
database
         
          レコードの該当位置に関連するデータベースの名前を文字列で返します。
         
array
         
          レコードは、GRS-1 の構造を反映した配列で返されます。
          この型は MARC および GRS-1 で使用可能です。XML、SUTRS
          はサポートされておらず、実際のレコードが XML あるいは SUTRS
          であった場合は空文字列が返されます。
          
          返される配列には、GRS-1 の各リーフ/内部ノードに対応するリストが
          含まれます。個々のリスト内にもリストがあり、
          最初の要素が path でその次が
          data です(もし data が存在する場合)。
          
          path は、ルートから各リーフまでの(構造化された GRS-1 レコードの)
          ツリーコンポーネントの一覧を保持します。各コンポーネントはタグ型で、
          タグの値は
          (type,value のような形式のペアとなります。 
          tags 文字列は、一般に type 3 の tag に対応します。
          MARC は配列で返すことも可能です(内部で GRS-1 に変換されます)。
          
  戻り値    
   位置 posのレコードを返します。もし指定した位置に
   レコードが存在しない場合は空文字列を返します。 
   もし指定した位置にデータベースのレコードが存在しない場合、
   空文字列が返されます。
   
  例
   例1 GRS-1 レコードの配列 
    このような GRS-1 レコードを想定します。
     
(4,52)Robert M. Pirsig
(4,70)
      (4,90)
            (2,7)Transworld Publishers, ltd. 
    このレコードは、ルートに 2 つのノードを持っています。ルートレベルの
    最初の要素は (4,52) [tag type 4, tag value 52] で、そのデータは
     Robert M. Pirsig です。ルートレベルの 2 番目の
    要素 (4,70) はサブツリーを持っており、そこにはひとつの要素
    (4,90) があります。(4,90) はまた別のサブツリー (2,7) を持っており、
    そのデータは  Transworld Publishers, ltd. です。
   
    このレコードが $p の位置にあるとすると、
     
<?php
$ar = yaz_record($id, $p, "array");
print_r($ar);
?>
 
    この出力は以下のようになります。
     
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.
        )
)      
 
   例2 MARCXML の使用 
    この PHP コードは、MARC21/USMARC レコードを MARCXML として返します。
    元のレコードは marc-8(ほとんどの XML パーサはこれを理解できません)なので、
    これを UTF-8(すべての XML パーサはこれを理解できなければなりません)
    に変換します。
     
<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>
    レコード $recは
    Sablotron XSLT を使用して
    以下のように処理可能です。
     
<?php
$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);
echo $res;
?>
 |