yaz_record
yaz_record — レコードを返す
説明
string yaz_record ( resource id, int pos, string type )yaz_record() 関数は、現在の結果セットの pos で指定した位置にあるレコードを調べます。
パラメータ
- 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 のレコードを返します。もし指定した位置に レコードが存在しない場合は空文字列を返します。もし指定した位置にデータベースのレコードが存在しない場合、 空文字列が返されます。
例
例 2493. 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. ) )
例 2494. 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;
?>
PHP 5 では、Sablotron XSLT ではなく XSL 拡張モジュールが使用される必要があります。
Weblioに収録されているすべての辞書からyaz_recordを検索する場合は、下記のリンクをクリックしてください。

- yaz_recordのページへのリンク