MARC データのフォーマット

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

概要

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

MARC 21 形式への整形

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

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

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

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 の中で連結するのです。