PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

MARC データのフォーマット | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

MARC データのフォーマット

MARC データのフォーマット – File_MARC を使用した MARC データの整形

概要

File_MARC_Record クラスを使用すると、 Machine Readable Cataloging (MARC) データを MARC 21 形式、可読形式の文字列および (制限はありますが) MARCXML 形式で書き出すことができます。

MARC 21 形式への整形

レコードを MARC 21 形式で返すには、 File_MARC_Record オブジェクトの toRaw() メソッドをコールします。

MARC 21 データのファイルへの書き込み

この例では、File_MARC_Record で表される MARC レコードを作成し、配列 $records に保存します。 このデータを MARC 21 形式でファイルに書き込むには、 まずファイルをバイナリモードでオープンします。 そして配列内のレコードの内容をファイルに書き込むために toRaw() メソッドをコールします。 これをレコードごとに繰り返します。

<?php
require 'File/MARC.php';

// convert_metadata_to_marc() は架空のメソッドで、
// File_MARC_Record オブジェクトの配列を返します
$records convert_metadata_to_marc(); 

// バイナリ書き込みモードでファイルをオープンします
$marc21_file fopen("records.mrc""wb");

// レコードを順に処理します
while ($record $records->next()) {
    
// 各レコードを、MARC 21 形式でファイルに書き込みます
    
fwrite($marc21_file$record->toRaw());
}

// ファイルを閉じます
fclose($marc21_file);
?>

MARC データからの可読形式の出力の作成

可読形式で MARC 21 あるいは MARCXML レコードを返すには、 File_MARC_Record オブジェクトの __toString() メソッドをコールします。 File_MARC_Record オブジェクトの print() 関数をコールした際には、暗黙的に __toString() メソッドをコールしていることに注意しましょう。

MARC の可読形式を返す

この例では、各 MARC レコードの内容を可読形式で表示します。 また、明示的に __toString() メソッドをコールし、 可読形式でファイルに書き込みます。入力形式が MARC あるいは MARCXML のどちらであっても、出力用にデータを整形するメソッドは同じであることに注意しましょう。

<?php
require 'File/MARCXML.php';

// MARCXML レコード群を文字列から取得します
$journals = new File_MARCXML($xml_dataFile_MARC::SOURCE_STRING);

// バイナリ書き込みモードでファイルをオープンします
$marc21_file fopen("records.mrc""wb");

// 取得したレコードを順に処理します
while ($record $journals->next()) {
    
// 各レコードをきれいに表示します
    
print $record;
    print 
"\n";

    
// きれいに整形したレコードをファイルに書き込みます
    
fwrite($marc21_file$record->__toString() . "\n");
}

// ファイルを閉じます
fclose($marc21_file);
?>

MARCXML 形式への整形

レコードを MARCXML 形式で返すには、 File_MARC_Record オブジェクトの toXML() メソッドをコールします。

toXML() メソッドの重要な制約

  • 最も重要なのは、PHP では MARC8 エンコーディングからの変換を行わないということです。 このエンコーディングは既存の MARC レコードの多くで用いられていますが、 これを XML で有効なエンコーディング、たとえば UTF-8 などに変換することはありません。他言語版の MARC ライブラリは、 独自の文字エンコーディング変換ライブラリを作成することでこの問題に対応しているようです。 現時点では、File_MARC の作者は同等の機能のサポートを PEAR パッケージとして組み込むだけの力がありません。 どなたか手伝ってくれる方を募集中です。 しかし、より望ましいのは、iconv や ICU ツールキットに ANSEL および MARC8 エンコーディングのサポートを追加することでしょう。 iconv や ICU ツールキットは、さまざまな言語の多くのオープンソースプロジェクトで エンコーディング変換に使用されています。

  • toXML() メソッドは、現在は ひとつの File_MARC_Record オブジェクトに対して ひとつの妥当な XML MARCXML ドキュメントを作成します。 ふたつの File_MARC_Record オブジェクトで toXML() をコールした結果を単純に連結することはできません。 そうすると、出来上がった XML ドキュメントが妥当な形式ではなくなるからです。 複数のレコードを含む MARCXML ドキュメントを作成したい場合、 現状では開発者自身でそれを行う必要があります。つまり、各 MARCXML ドキュメントの record ノードを取り出し、それを ルート要素 collection の中で連結するのです。

MARCXML データのファイルへの書き込み

この例では、File_MARC_Record で表される MARC レコードを作成し、配列 $records に保存します。 このデータを MARCXML 形式でファイルに書き込むには、 まずファイルをバイナリモードでオープンします。 そして配列内のレコードの内容をファイルに書き込むために toXML() メソッドをコールします。

<?php
require 'File/MARC.php';

// MARC レコードを作成します
$record create_a_marc_record();

// バイナリ書き込みモードでファイルをオープンします
$marcxml_file fopen("records.mrc""wb");

// レコードを MARCXML 形式でファイルに書き込みます
fwrite($marcxml_file$record->toXML());

// ファイルを閉じます
fclose($marcxml_file);
?>
忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「MARC データのフォーマット」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | MARC データのフォーマット」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: