File_MARC を使用すると、MARC 21 フォーマットの Machine Readable Cataloging (MARC) データを読み込むことができます。 File_MARC に同梱されている File_MARCXML を使用すると、 MARCXML 形式のデータを読み込むことができます。
入力元は、PHP のストリーム (File_MARC::SOURCE_FILE) あるいは文字列 (File_MARC::SOURCE_STRING) となります。 File_MARC および File_MARCXML のコンストラクタで、最初の引数としてソースの位置を、 二番目の引数としてソースの形式を指定します。
例 43-1ファイルからの MARC 21 データの読み込み この例では、MARC21 データが journals.mrc という名前でディスク上に保存されているものとします。 MARCX21 データを読み込むには、File_MARC のコンストラクタをコールします。File_MARC に対して、 journals.mrc がファイル名なのか MARC データストリームを指しているのかを指定する必要はありません。 File_MARC のコンストラクタの第二引数は、 デフォルトで File_MARC::SOURCE_FILE となるからです。
|
例 43-2文字列からの MARCXML データの読み込み この例では、あるウェブサービスから返された MARCXML データが PHP の変数 $xml_data に文字列で格納されているものとします。 MARCXML データを読み込むには、File_MARCXML のコンストラクタをコールします。$xml_data が文字列であることを File_MARCXML に教えるため、 コンストラクタの第二引数で File_MARC::SOURCE_STRING を指定します。
|
File_MARC オブジェクトは、先頭部の情報の後に File_MARC_Record オブジェクトが順に並ぶ形式となります。 これが MARC レコードを表します。また、各レコードオブジェクトは、それぞれ File_MARC_Data_Field あるいは File_MARC_Control_Field オブジェクトの繰り返しになります。 これが MARC フィールドを表します。 File_MARC_Data_Field の中身は File_MARC_Subfield オブジェクトの繰り返しとなり、 これが MARC サブフィールドを表します。
例 43-3レコードの要素の表示
|
つまり、File_MARC を使用すると、MARC レコードを読み込んで その中の特定のフィールドやサブフィールドの内容を取得することが簡単にできます。 File_MARC には、いちいち順次処理をしなくても 特定のフィールドを簡単に読み込めるようにするメソッドもあります。 getField は、 該当するフィールド名の最初のレコードを返します。また getFields は、 該当する名前のフィールドをすべて含む配列を返します。 これらのメソッドはどちらも、オプションで boolean 型のパラメータを指定できます。 これは、指定した文字列を Perl 互換の正規表現として扱うかどうかを指定するものです。
例 43-4レコードからのすべての 650 フィールドの取得
|
File_MARC_Data_Field オブジェクトを foreach() で順に処理する際には、 指定したフィールドの MARC タグがキーとして返されます。 また、対応する値には、サブフィールド群が返されます。
同様に、File_MARC_Subfield オブジェクトを foreach() で順に処理する際には、 指定したサブフィールドのコードがキーとして返されます。 また、対応する値には、そのサブフィールドの値が返されます。
例 43-5MARC レコード内のフィールドとサブフィールドの順次処理 この例では、650 フィールドを順に処理し、各フィールドの サブフィールドにある件名の見出しを表示します。
|
データフィールドは File_MARC_Data_Field クラスで表されます。 このクラスの関数 getIndicator() を使用すると、 インジケータの値を取得することができます。
例 43-6インジケータの取得 この例では、MARC レコードのタイトル (245) フィールドを取得し、 そのフィールドの二番目のインジケータを調べます。これによって、そのフィールドに 並べ替えの際に無視すべき非ファイリングインジケータがあるかどうかを判断します。
|