以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定したりするものではない。
本発明においては、他の装置(例えば、図1のFTPクライアント3)とデータのデータ転送を行う情報処理装置(例えば、図1のFTPサーバ1)が提供される。この情報処理装置では、他の装置との間で実行されるデータのデータ転送の授受に関する処理を行うデータ転送手段(例えば、図3のFTPインタフェース処理部21)と、データ転送手段によりデータ転送される、メタ言語を基に記述されたデータであるメタ言語データ(例えば、図3のXML文書A41)を構文解析する構文解析手段(例えば、図3のXMLパーサ23)と、構文解析手段により構文解析されたメタ言語データに対応する構造体(例えば、図3の内部データ(構造体)42)をイニシャライズするイニシャライズ手段(例えば、図3のXMLイニシャライザ24)とを備える。
前記イニシャライズ手段によりイニシャライズされたメタ言語データ(例えば、図3のXML文書B43)を記録媒体(例えば、図1の光ディスク4)に記録する記録手段(例えば、図1の記録処理部13)とをさらに備えるようにすることができる。
前記データ転送手段は、他の装置よりデータ転送されたデータ群を受信し、データ転送手段により受信されたデータ群を保持する保持手段(例えば、図3のメモリ22)と、保持手段により保持されたデータ群よりメタ言語データを抽出する抽出手段(例えば、図3のXML抽出部31)とをさらに備えるようにすることができる。
本発明においては、他の装置(例えば、図1のFTPクライアント3)とデータのデータ転送を行う情報処理装置(例えば、図1のFTPサーバ1)の情報処理方法が提供される。この情報処理方法においては、他の装置との間で実行されるデータのデータ転送の授受に関する処理の制御を行うデータ転送制御ステップ(例えば、図6のステップS1)と、データ転送制御ステップの処理により制御されてデータ転送されるメタ言語データ(例えば、図3のXML文書A41)を構文解析する構文解析ステップ(例えば、図6のステップS5)と、構文解析ステップの処理により構文解析されたメタ言語データに対応する構造体(例えば、図3の内部データ(構造体)42)をイニシャライズするイニシャライズステップ(例えば、図6のステップS7)とを含む。
本発明においては、他の装置とデータのデータ転送を行う処理を、コンピュータ(例えば、図4の画像処理装置100)に行わせるプログラムが提供される。このプログラムは、他の装置との間で実行されるデータのデータ転送の授受に関する処理の制御を行うデータ転送制御ステップ(例えば、図6のステップS1)と、データ転送制御ステップの処理により制御されてデータ転送されるメタ言語データ(例えば、図3のXML文書A41)を構文解析する構文解析ステップ(例えば、図6のステップS5)と、構文解析ステップの処理により構文解析されたメタ言語データに対応する構造体(例えば、図3の内部データ(構造体)42)をイニシャライズするイニシャライズステップ(例えば、図6のステップS7)とを含む。
以下に、本発明の実施の形態について図面を参照して説明する。
図1は、本発明を適用した画像データや音声データ(以下において画像データおよび音声データをそれぞれ区別して説明する必要の無い場合、素材データと称する)等をFTP(File Transfer Protocol)転送するネットワークシステム(システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない)の一実施の形態の構成例を示している。
このネットワークシステムは、FTP転送される各種のデータを受け付けるFTPサーバ1がネットワーク2に接続される。また、ネットワーク2には、FTPサーバ1に対して素材データ等を、ネットワーク2を介してFTP転送させるFTPクライアントも接続されている。すなわち、図1のネットワークシステムにおいては、FTPクライアント3がネットワーク2を介してFTPサーバ1に、素材データやメタデータ等の各種のデータをFTP転送する。FTPサーバ1は、FTP転送されたそれらのデータを取得すると、そのデータを記録媒体である光ディスク4に記録する。
FTPサーバ1は、FTP転送を制御するFTP転送処理部11、受信したデータを符号化する等して、光ディスク4に記録可能なデータに変換する信号処理部12、並びに、光ディスク4を駆動し、信号処理部4より供給されるデータを光ディスク4に記録する記録処理部13により構成される。
図2は、図1のFPT転送処理部11の内部の構成例を示すブロック図である。
図2において、FTP転送処理部11は、FTPインタフェース処理部21、メモリ22、XMLパーサ23、およびXMLイニシャライザ24により構成される。
FTPインタフェース処理部21は、ネットワーク2(図1)に接続され、FTP転送に関するインタフェース処理を行う。すなわち、図1に示されるネットワークシステムにおいて、FTPインタフェース処理部21は、ネットワーク2を介してFTPクライアント3と通信を行い、FTPクライアント3からのFTP転送に関する要求を受け付け、その要求に対して応答し、FTPクライアント3よりFTP転送される素材データやメタデータ等を受信し、それらをメモリ22に供給する。また、FTPインタフェース処理部21は、FTPクライアント3に対する応答として、XMLパーサ23の構文解析部32より供給される解析結果に基づいて、FTP転送処理の受信結果に関する情報をFTPクライアント3に供給する。
メモリ22は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等の半導体メモリ等により構成され、FTPインタフェース処理部21により受信されて供給された各種のデータを一時的に保持する。
すなわち、図2の場合、FTPインタフェース処理部21は、素材データ等の他のデータの他に、メタデータ等のXML文書A41を受信し、メモリ22に供給する。メモリ22は、そのXML文書A41を一時的に保持する。なお、このXML文書A41は、FTPサーバ1の外部よりFTP転送されてきたデータであり、通常、FTPサーバ1の外部において生成されたデータである。従って、このXML文書A41は、FTPサーバ1の仕様を満たす(機器制限に対応している)保証はない。
また、メモリ22は、保持したXML文書A41をXMLパーサ23のXML抽出部31に供給したり、XMLパーサ23のデータ変換部33より供給される内部データ42を一時的に保持したり、その内部データ42をXMLイニシャライザ24に供給したり、XMLイニシャライザ24より供給されたXML文書B43を一時的に保持し、信号処理部12に供給したりする等、各種のデータを中継する。
XMLパーサ23は、FTPインタフェース処理部21において受信されたXML文書(図2の場合XML文書A41)を構文解析し、FTPサーバ1の仕様に基づいて、内容が不正であるか否かを判定し、その判定結果に基づいて適宜対応する処理部であり、XML抽出部31、構文解析部32、およびデータ変換部33により構成される。
XML抽出部31は、メモリ22に保持された、FTPインタフェース処理部21において受信されたデータの中から、XML文書(図2の場合、XML文書A41)を抽出し、構文解析部32に供給する。
構文解析部32は、XML抽出部31において抽出され、供給されたXML文書(XML文書A41)の構文を解析し、FTPサーバ1の仕様に違反しているか否かを判定し、判定結果に基づいて対応処理方法を決定し、その処理を行う。例えば、構文解析部32は、構文解析を正常に終了した場合、そのXML文書をデータ変換部33に供給する。また、例えば、XML文書の選択部分(非必須部分)においてエラーが発生した場合、構文解析部32は、その選択部分を削除する等してから残りのXML文書をデータ変換部33に共有する。さらに、例えば、必須部分においてエラーが発生する等、致命的なエラーが発生した場合、構文解析部32は、構文解析処理を中止するとともに、FTPインタフェース処理部21にエラーを通知し、FTPクライアント3に対してエラー応答させる。
データ変換部33は、構文解析部32より供給されたXML文書を内部データ(構造体)に変換し、それをメモリ22に供給して保持させる。図2の場合、データ変換部33は、構文解析部32より供給されたXML文書(XML文書A41の一部または全部)を内部データ(構造体)42に変換し、メモリ22に供給して保持させる。
XMLイニシャライザ24は、メモリ22よりXMLパーサ23が作成した内部データ(構造体)を取得するとそれを元のXML文書形式のデータに変換し、メモリ22に供給する。図2の場合、XMLイニシャライザ24は、メモリ22より内部データ(構造体)42を取得し、それをイニシャライズ処理により変換して得られたXML文書B43をメモリ22に供給する。
このXML文書B43は、XML文書A43が、XMLパーサ23の構文解析部32により、FTPサーバ1の仕様に基づいて構文解析され、FTPサーバ1の機器制限に対応した部分のみにより構成される内部データ42がイニシャライズされて生成されたものである。従って、XML文書B43は、サーバ1が安全に利用することができることが保証されたデータである。
次に、図3乃至図5を参照して、図1に示されるネットワークシステムにおいてFTP転送され、光ディスク4に記録される各データ(ファイル)について説明する。
光ディスク4に記録されたデータを管理するファイルシステムとしては、どのようなファイルシステムを用いてもよく、例えば、UDF(Universal Disk Format)やISO9660(International Organization for Standardization 9660)等を用いてもよい。また、光ディスク17の代わりにハードディスク等の磁気ディスクを用いた場合、ファイルシステムとして、FAT(File Allocation Tables)、NTFS(New Technology File System)、HFS(Hierarchical File System)、またはUFS(Unix(登録商標) File System)等を用いてもよい。また、専用のファイルシステムを用いるようにしてもよい。
このファイルシステムにおいては、光ディスク4に記録されたデータは図3に示されるようなディレクトリ構造およびファイルにより管理される。
図3において、ルートディレクトリ(ROOT)51には、画像データや音声データ等の素材データに関する情報、および、素材データの編集結果を示すエディットリスト等が、下位のディレクトリに配置されるPROAVディレクトリ52が設けられる。なお、ルートディレクトリ51には、図示は省略するが、構成表データ等も設けられる。
PROAVディレクトリ52には、光ディスク4に記録されている全ての素材データに対するタイトルやコメント、さらに、光ディスク4に記録されている全ての画像データの代表となるフレームである代表画に対応する画像データのパス等の情報を含むファイルであるディスクメタファイル(DISCMETA.XML)53、光ディスク4に記録されている全てのクリップおよびエディットリストを管理するための管理情報等を含むインデックスファイル(INDEX.XML)54、およびインデックスファイル(INDEX.BUP)55が設けられている。なお、インデックスファイル55は、インデックスファイル54を複製したものであり、2つのファイルを用意することにより、ファイルの破損等に対する耐性を強化し、信頼性の向上が図られている。
PROAVディレクトリ52には、さらに、光ディスク4に記録されているデータ全体に対するメタデータであり、例えば、ディスク属性、再生開始位置、またはReclnhi等の情報を含むファイルであるディスクインフォメーションファイル(DISCINFO.XML)56およびディスクインフォメーションファイル(DISKINFO.BUP)57が設けられている。なお、ディスクインフォメーションファイル57は、ディスクインフォメーションファイル56を複製したものであり、2つのファイルを用意することにより、ファイルの破損等に対する耐性を強化し、信頼性の向上が図られている。ただし、これらの情報を更新する場合、ディスクインフォメーションファイル56のみを更新するようにしてもよい。
また、PROAVディレクトリ52には、上述したファイル以外にも、クリップのデータが下位のディレクトリに設けられるクリップルートディレクトリ(CLPR)58、および、エディットリストのデータが下位のディレクトリに設けられるエディットリストルートディレクトリ(EDTR)59が設けられる。
クリップルートディレクトリ58には、光ディスク4に記録されているクリップのデータが、クリップ毎に異なるディレクトリに分けて管理されており、例えば、図3の場合、3つのクリップのデータが、クリップディレクトリ(C0001)61、クリップディレクトリ(C0002)62、および、クリップディレクトリ(C0003)63の3つのディレクトリに分けられて管理されている。すなわち、光ディスク4に記録された最初のクリップの各データは、クリップディレクトリ61の下位のディレクトリのファイルとして管理され、2番目に光ディスク4に記録されたクリップの各データは、クリップディレクトリ62の下位のディレクトリのファイルとして管理され、3番目に光ディスク4に記録されたクリップの各データは、クリップディレクトリ63の下位のディレクトリのファイルとして管理される。
また、エディットリストルートディレクトリ59には、光ディスク4に記録されているエディットリストが、その編集処理毎に異なるディレクトリに分けて管理されており、例えば、図3の場合、4つのエディットリストが、エディットリストディレクトリ(E0001)64、エディットリストディレクトリ(E0002)65、エディットリストディレクトリ(E0003)66、およびエディットリストディレクトリ(E0004)67の4つのディレクトリに分けて管理されている。すなわち、光ディスク4に記録されたクリップの1回目の編集結果を示すエディットリストは、エディットリストディレクトリ64の下位のディレクトリのファイルとして管理され、2回目の編集結果を示すエディットリストは、エディットリストディレクトリ65の下位のディレクトリのファイルとして管理され、3回目の編集結果を示すエディットリストは、エディットリストディレクトリ66の下位のディレクトリのファイルとして管理され、4回目の編集結果を示すエディットリストは、エディットリストディレクトリ67の下位のディレクトリのファイルとして管理される。
上述したクリップルートディレクトリ58に設けられるクリップディレクトリ61の下位のディレクトリには、最初に光ディスク4に記録されたクリップの各データが、図4に示されるようなファイルとして設けられ、管理される。
図4の場合、クリップディレクトリ61には、このクリップを管理するファイルであるクリップインフォメーションファイル(C0001C01.SMI)71、このクリップの画像データを含むファイルである画像データファイル(C0001V01.MXF)72、それぞれ、このクリップの各チャンネルの音声データを含む8つのファイルである音声データファイル(C0001A01.MXF乃至C0001A08.MXF)73乃至80、このクリップの画像データに対応する低解像度のデータを含むファイルであるローレゾデータファイル(C0001S01.MXF)81、このクリップの素材データに対応する、例えば、LTCとフレーム番号を対応させる変換テーブル等の、リアルタイム性を要求されないメタデータであるクリップメタデータを含むファイルであるクリップメタデータファイル(C0001M01.XML)82、このクリップの素材データに対応する、例えばLTC等の、リアルタイム性を要求されるメタデータであるフレームメタデータを含むファイルであるフレームメタデータファイル(C0001R01.BIM)83、並びに、画像データファイル152のフレーム構造(例えば、MPEG等におけるピクチャ毎の圧縮形式に関する情報や、ファイルの先頭からのオフセットアドレス等の情報)が記述されたファイルであるピクチャポインタファイル(C0001I01.PPF)84等のファイルが設けられる。
図4の場合、再生時にリアルタイム性を要求されるデータである、画像データ、ローレゾデータ、およびフレームメタデータは、それぞれ1つのファイルとして管理され、読み出し時間が増加しないようになされている。
また、音声データも、再生時にリアルタイム性を要求されるが、7.1チャンネル等のような音声の多チャンネル化に対応するために、8チャンネル用意され、それぞれ、異なるファイルとして管理されている。すなわち、音声データは8つのファイルとして管理されるように説明したが、これに限らず、音声データに対応するファイルは、7つ以下であってもよいし、9つ以上であってもよい。
同様に、画像データ、ローレゾデータ、およびフレームメタデータも、場合によって、それぞれ、2つ以上のファイルとして管理されるようにしてもよい。
また、図4において、リアルタイム性を要求されないクリップメタデータは、リアルタイム性を要求されるフレームメタデータと異なるファイルとして管理される。これは、画像データ等の通常の再生中に必要の無いメタデータを読み出さないようにするためであり、このようにすることにより、再生処理の処理時間や、処理に必要な負荷を軽減することができる。
なお、クリップメタデータファイル82は、汎用性を持たせるためにXML(eXtensible Markup Language)形式で記述されているが、フレームメタデータファイル83は、再生処理の処理時間や処理に必要な負荷を軽減させるために、XML形式のファイルをコンパイルしたBIM形式のファイルである。
図4に示されるクリップディレクトリ61のファイルの構成例は、光ディスク4に記録されている各クリップに対応する全てのクリップディレクトリにおいて適用することができる。すなわち、図3に示される、その他のクリップディレクトリ62および63においても、図4に示されるファイルの構成例を適用することができるので、その説明を省略する。
次に、図3のエディットリストルートディレクトリ59の下位のディレクトリにおけるファイルの構成例について説明する。上述したエディットリストルートディレクトリ59に設けられるエディットリストディレクトリ65の下位のディレクトリには、光ディスク17に記録されたクリップの各データの2回目の編集結果に関する情報であるエディットリストのデータが、図5に示されるようなファイルとして設けられ、管理される。
図5の場合、エディットリストディレクトリ65には、この編集結果(エディットリスト)を管理するファイルであるエディットリストファイル(E0002E01.SMI)91、この編集後の素材データ(編集に用いられた全クリップの素材データの内、編集後のデータとして抽出された部分)に対応するクリップメタデータ、または、そのクリップメタデータに基づいて新たに生成されたクリップメタデータを含むファイルであるエディットリスト用クリップメタデータファイル(E0002M01.XML)92、この編集結果(エディットリスト)に基づいた、素材データの再生手順(プレイリスト)等の情報を含むファイルであるプレイリストファイル(E0002P01.SMI)93、プレイリストファイル93に含まれる再生手順に基づいて再生される画像データのフレーム構造(例えば、MPEG等におけるピクチャ毎の圧縮形式に関する情報や、ファイルの先頭からのオフセットアドレス等の情報)が記述されたファイルであるプレイリスト用ピクチャポインタファイル(C0001I01.PPF)94、プレイリストファイル93の再生手順(プレイリスト)に基づいた実時間再生を保証するための画像データを含むファイルであるプレイリスト用画像データファイル(E0002V01.BMX)95、プレイリストファイル93の再生手順(プレイリスト)に基づいた実時間再生を保証するための音声データを含む4つのファイルであるプレイリスト用音声データファイル(E0002A01.BMX乃至E0002A04.BMX)96乃至99、プレイリストファイル93の再生手順(プレイリスト)に基づいた実時間再生を保証するためのローレゾデータを含むファイルであるプレイリスト用ローレゾデータファイル(E0002S01.BMX)100、並びに、プレイリストファイル93の再生手順(プレイリスト)に基づいた実時間再生を保証するためのフレームメタデータを含むファイルであるプレイリスト用フレームメタデータファイル(E0002R01.BBM)101等のファイルが設けられる。
図5において、リアルタイム性を要求されないクリップメタデータは、リアルタイム性を要求されるフレームメタデータと異なるファイルとして管理される。これは、再生手順(プレイリスト)を用いて画像データ等を再生中に(編集結果の再現中に)、必要の無いメタデータを読み出さないようにするためであり、このようにすることにより、再生処理の処理時間や、処理に必要な負荷を軽減することができる。
エディットリスト用クリップメタデータファイル92は、編集結果に基づいて、編集に使用されたクリップのクリップメタデータ(クリップルートディレクトリ58の下位のディレクトリに存在するクリップメタデータファイル)に基づいて生成された新たなクリップメタデータを含むファイルである。例えば、編集が行われると、図4のクリップメタデータファイル82に含まれるクリップメタデータから、編集後の素材データに対応する部分が抽出され、それらを用いて、編集後の素材データを1クリップとする新たなクリップメタデータが再構成され、エディットリスト用クリップメタデータファイルとして管理される。すなわち、編集後の素材データには、編集後の素材データを1クリップとする新たなクリップメタデータが付加され、そのクリップメタデータが1つのエディットリスト用クリップメタデータファイルとして管理される。従って、このエディットリスト用クリップメタデータファイルは、編集毎に生成される。
なお、このエディットリスト用クリップメタデータファイル92は、汎用性を持たせるために、XML形式で記述される。
プレイリスト用画像データファイル95に含まれる画像データ、プレイリスト用音声データファイル96乃至99に含まれる各音声データ、プレイリスト用ローレゾデータファイル100に含まれるローレゾデータ、並びに、プレイリスト用フレームメタデータファイル101に含まれるフレームメタデータは、それぞれ、図4のクリップルートディレクトリ58の下位のディレクトリにおいて管理されるクリップに対応する画像データ、音声データ、ローレゾデータ、およびフレームメタデータより抽出されたデータであり、編集結果に対応するデータである。これらのデータは、プレイリストファイル93に含まれる再生手順(プレイリスト)に基づいて再生処理が行われる場合に読み出される。このような編集結果に対応する各データが用意されることにより、プレイリストに基づいた再生処理において、読み出すファイルの数を減らすことができ、その処理時間および処理に必要な負荷を軽減させることができる。
なお、画像データ、ローレゾデータ、およびフレームメタデータは、場合によって、それぞれ、複数のファイルとして管理されるようにしてもよい。同様に、音声データに対応するファイルの数は、3つ以下であってもよいし、5つ以上であってもよい。
なお、プレイリスト用フレームメタデータファイル101は、再生処理の処理時間や処理に必要な負荷を軽減させるために、XML形式のファイルをコンパイルしたBIM形式に対応するBBM形式のファイルである。
図5に示されるエディットリストディレクトリ65のファイルの構成例は、全てのエディットリスト(編集結果)において適用することができる。すなわち、図3に示される、その他のエディットリストディレクトリ64、66、または67においても、図5に示されるファイルの構成例を適用することができるので、その説明を省略する。
図1のネットワークシステムにおいては、このように様々なファイル(データ)がFTP転送される。図2のXML抽出部31は、これらのファイルの内、各ファイルの拡張子に基づいて、ディスクメタファイル(DISCMETA.XML)53、インデックスファイル(INDEX.XML)54、ディスクインフォメーションファイル(DISCINFO.XML)56、クリップメタデータファイル(C0001M01.XML)82、または、エディットリスト用クリップメタデータファイル(E0002M01.XML)92等を抽出し、構文解析部32は、これらのファイルをFTPサーバ1の使用に基づいて構文解析する。
次に、図2のFTPサーバ1のFTP転送処理部11の動作について説明する。
図1のネットワークシステムにおいては、FTPクライアント3は、画像データや音声データとともに、図3乃至図5を参照して説明したような様々なデータをFTPサーバ1にFTP転送する。
そして、図2のFTPインタフェース処理部21は、ネットワーク2を介して、FTPクライアント3と通信を行い、FTPクライアント3よりFTP転送の開始を要求されると、その要求に基づいてFTP転送を許可し、FTP処理を開始する。FTP処理を図6のフローチャートを参照して説明する。
FTP処理を開始すると、FTPインタフェース処理部21は、最初に、ステップS1において、ネットワーク2を介してFTPクライアント3より供給されるFTP転送データの受信処理を行い、ステップS2において、その受信したデータをメモリ22に供給し、保持させ、ステップS3に処理を進める。
メモリ22にデータが格納されたのを確認すると、XML抽出部24は、ステップS3において、メモリ22内のデータを確認し、メモリ22内にXML文書が存在するか否かを判定し、FTPクライアント3よりFTP転送されたXML文書が存在すると判定した場合、ステップS4に処理を進める。ステップS4において、メモリ22内に保持されているXML文書を抽出し、構文解析部32に供給する。構文解析部32は、ステップS5において、構文解析処理を実行する。構文解析処理の詳細は図7のフローチャートを参照して説明する。
構文解析処理が終了すると構文解析部32は、ステップS6に処理を進める。ステップS6において、FTPインタフェース処理部21は、構文解析部32による解析結果に基づいて、応答処理を行い、ステップS7に処理を進める。
ステップS7において、XMLイニシャライザ24は、メモリ22より内部データ(構造体)を取得し、XMLイニシャライズ処理を実行し、XML文書B43を生成し、それをメモリ22に一時的に保持させる。そして、メモリ22は、ステップS8において、データを信号処理部12に出力し、FTP処理を終了する。
また、ステップS3において、FTPインタフェース処理部21がFTPクライアント3よりXML文書を受信しておらず、メモリ22に存在しないと判定した場合、XML抽出部32は、処理をステップS9に進める。ステップS9において、FTPインタフェース処理部21は、応答処理を実行した後、ステップS8に処理を戻し、それ以降の処理を繰り返す。
次に、図7のフローチャートを参照して、図6のステップS5において実行される構文解析処理を説明する。
最初に、XML抽出部31よりXML文書A41を供給された構文解析部32は、ステップS21で、処理するXML文書において、解析する階層をルートに設定する。構文解析部32は、XML文書を要素毎に解析していく。XML文書の構造は、その要素毎に一般的に階層化されている。従って、構文解析部32は、上位階層より順に要素を1つずつ解析していく。
次に構文解析部32は、ステップS22において、現在の階層において解析する要素を選択し、ステップS23において、その要素解析処理をおこなう。そして、要素解析処理が終了すると、構文解析部32は、ステップS24に処理を進め、要素解析処理の処理結果に基づいて解析処理を中止するか否かを判定する。致命的なエラーが発生しておらず、中止しないと判定した場合、構文解析部32は、処理をステップS25に進める。
ステップS25において、構文解析部32は、現在の階層に未解析の要素が存在するか否かを判定する。未解析の要素が存在すると判定した場合、構文解析部32は、処理をステップS22に戻し、それ以降の処理を繰り返し、次の要素に対して構文解析処理を行う。ステップS22乃至ステップS25の処理を繰り返し、ステップS25において、現在の階層について全ての要素を解析したと判定した場合、構文解析部32は、ステップS26に処理を進める。
ステップS26において、構文解析部32は、XML文書A41の最下位層を解析したか否かを判定し、最下位層を解析していないと判定した場合、処理をステップS27に進め、解析する階層を1つ下げ、処理をステップS22に戻し、それ以降の処理を繰り返す。すなわち、構文解析部32は、ステップS22乃至ステップS27の処理を繰り返すことにより、全ての階層の要素を解析する。そして、ステップS26において、最下位層の解析が終了し、全ての要素を解析したと判定した場合、構文解析部26は、構文解析処理を終了し、処理を図6のステップS5に戻す。
また、ステップS24において、要素解析処理結果に基づいて、解析処理を中止すると判定した場合、構文解析部32は、構文解析処理を終了し、処理を図6のステップS5に戻す。
次に、図7のフローチャートのステップS23において実行される要素解析処理を図8および図9のフローチャートを参照して説明する。
要素解析処理を開始した構文解析部32は、ステップS41において、解析処理の対象となる現在の要素の記述において、必須の属性が存在するか否かを判定する。その要素において必須とされる属性が全て存在し、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS42に処理を進め、解析処理の対象となる現在の要素の記述において、未知の属性が存在するか否かを判定する。その要素において未知とされる属性が存在せず、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS44に処理を進める。また、ステップS42において、解析処理の対象となる現在の要素の記述において、未知とされる属性が存在すると判定した場合、構文解析部32は、その未知の属性が装置の仕様を満たすか否か不明であるため、ステップS43に処理を進め、その未知の属性を削除する。未知の属性を削除した構文解析部32は、処理をステップS44に進める。
ステップS44において、構文解析部32は、解析処理の対象となる現在の要素の記述において、必須とされる子要素が存在するか否かを判定する。その要素において必須とされる子要素が全て存在し、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS45に処理を進め、解析処理の対象となる現在の要素の記述において、未知の子要素が存在するか否かを判定する。その要素において未知とされる子要素が存在せず、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS47に処理を進める。また、ステップS45において、解析処理の対象となる現在の要素の記述において、未知とされる属性が存在すると判定した場合、構文解析部32は、その未知の属性が装置の仕様を満たすか否か不明であるため、ステップS46に処理を進め、その未知の属性を削除する。未知の属性を削除した構文解析部32は、処理をステップS47に進める。
ステップS47において、構文解析部32は、解析処理の対象となる現在の要素の記述において、同じ子要素が規定数以上存在するか否かを判定する。その要素において同じ子要素が規定数より少なく、装置の仕様上問題が無いと判定した場合、構文解析部32は、図9のステップS51に処理を進める。また、ステップS47において、解析処理の対象となる現在の要素の記述において、同じ子要素が規定数以上存在すると判定した場合、構文解析部32は、仕様上、規定数以上の同一の子要素を処理することができないため、ステップS48に処理を進め、その同一の子要素の内、規定数以上の部分を全て削除する。規定数以上の子要素を削除した構文解析部32は、処理を図9のステップS51に進める。
図9のステップS51において、構文解析部32は、解析処理の対象となる現在の要素の記述において、子要素が定義外の値を含むか否かを判定する。解析処理の対象となる現在の要素の記述において、子要素が定義外の値を含まず、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS52に処理を進める。ステップS52において、構文解析部32は、解析処理の対象となる現在の要素の記述において、子要素のデータ長が規定内であるか否かを判定する。解析処理の対象となる現在の要素の記述において、子要素のデータ長が規定内であり、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS53に処理を進める。
ステップS53において、構文解析部32は、解析処理の対象となる現在の要素の記述において、不要な子要素が存在するか否かを判定する。解析処理の対象となる現在の要素の記述において、不要な子要素が存在せず、装置の仕様上問題が無いと判定した場合、構文解析部32は、ステップS55に処理を進める。また、ステップS53において、不要な子要素が存在すると判定した場合、構文解析部32は、ステップS54に処理を進め、不要な子要素およびその子要素を削除し、ステップS55に処理を進める。
ステップS55において、構文解析部32は、その要素について解析が終了したか否かを判定する。まだ要素内の全ての記述を解析しておらず、その要素について解析が終了していないと判定した場合、構文解析部32は、図8のステップS41に処理を戻し、それ以降の処理を繰り返す。また、図9のステップS55において、その要素について解析が終了したと判定した場合、構文解析部32は、現在残っている記述をデータ変換部33に供給する。ステップS56において、データ変換部33は、その記述を構造体に格納し、内部データ42としてメモリ22に供給する。ステップS56の処理を終了したデータ変換部33は、要素解析処理を終了し、図7のステップS23に処理を戻す。
また、図8のステップS41において、解析処理の対象となる現在の要素の記述において、その要素において必須とされる属性が存在しないと判定した場合、図8のステップS44において、必須の子要素が存在しないと判定した場合、図9のステップS51において、子要素の値が定義外の値を含むと判定した場合、または、図9のステップS52において、子要素のデータ長が規定外であると判定した場合、この要素の情報は使用不可能と判断し、構文解析部32は、処理を図9のステップS57に進める。
図9のステップS57において、構文解析部32は、この要素が削除可能な選択要素であるか否かを判定する。この要素が必須要素であり、この要素を削除することができないと判定した場合、構文解析部32は、処理をステップS58に進め、致命的なエラーが発生したと判定し、構文解析処理を中止するように設定し、FTPインタフェース処理部21を制御して、例えば、図10Aに示されるような「550 E00X:File unrecognized」等のエラーメッセージ121をFTPクライアント3に対して供給させる。ステップS58の処理を終了した構文解析部32は、要素解析処理を終了し、図7のステップS23に処理を戻す。この場合、構文解析処理を中止するように設定されているので、構文解析部32は、図7のステップS24において、解析処理を中止すると判定し、構文解析処理が終了される。
また、ステップS57において、この要素が選択要素であり、この要素が削除されても、上位階層等にも影響を及ぼさない要素であると判定した場合、構文解析部32は、この要素の問題については、この要素を削除することにより解決されると判断し、ステップS59に処理を進め、この要素の記述を全て削除する。ステップS59の処理を終了した構文解析部32は、要素解析処理を終了し、図7のステップS23に処理を戻す。この場合、構文解析処理を中止するように設定されていないので、構文解析部32は、図7のステップS24において、解析処理を中止しないと判定し、ステップS25に処理を進める。
解析処理を中止せずに最後まで行った構文解析部32は、例えば、図6のステップS6またはステップS9において、FTPインタフェース処理部21を制御して、例えば、図10Bに示されるような「226:Closing data connection. Requested file action successful」等のFTP転送完了メッセージ122をFTPクライアント3に対して供給させる。
以上のように、FTPサーバ1は、FTP転送処理部11において、FTP転送されたデータ群を光ディスク4に記録する前に、それらのデータ群の中からXML文書を抽出し、FTPサーバ1の仕様に基づいて構文解析を行い、仕様に対応しない部分を削除し、記録しないようにするので、FTPサーバ1の仕様を満たすXML文書、すなわち、FTPサーバ1の仕様による制限に対応した、FTPサーバ1にとって安全なXML文書のみを光ディスク4に記録することができる。これにより、FTPサーバ1は、光ディスク4に記録したXML文書を読み出して処理する場合の危険性を低減させ、装置の安全性を向上させることができる。
また、XML文書を構文解析する際に発生したエラーが致命的なエラーか否かを判定し、そうでない場合は、仕様に対応しない部分のみを削除することにより、残りのFTPサーバ1にとって安全な部分を採用して記録することができるので、FTPサーバ1の仕様の制限により、光ディスク4に記録するための条件が不要に厳しくなることを抑制することができる。これにより、FTPサーバ1は、装置の利便性を維持したまま、装置の安全性を向上させることができる。
さらに、FTPサーバ1は、FTP転送されたXML文書を1度構文解析し、それをイニシャライズして元の書式に戻してから光ディスク4に記録するので、XML文書が整形され、光ディスク4に記録されている時のXML文書の改行やスペース等の書式が統一されるので、そのXML文書を利用する際に構文解析してイニシャライズしても、既に整形済みであるので、その書式もデータ量も変化せず、同じ内容のXML文書であるにも関わらずデータ量が変化する等の不都合を抑制することができ、検索処理等が容易かつ正確になる。従って、データの利便性が向上する。
なお、以上においては、FTP転送されたXML文書を記録媒体に記録する前に、構文解析を行うように説明したが、これ以外にも、例えば、FTPサーバ1がXML文書をFTPにより送信する場合に、その送信前に、XML文書を構文解析し、イニシャライズしてから送信するようにしてももちろんよい。このとき、FTPサーバ1が、送信先の装置の仕様に基づいて構文解析を行うようにすることにより、送信先の装置の安全性を向上させることもできる。
また、以上においては、図1にネットワークシステムを示したが、ネットワークシステムの構成は、図1に示される以外の構成であってもよい。例えば、ネットワーク2に複数のFTPクライアント3またはFTPサーバ1が接続されるようにしてももちろんよいし、FTPサーバ1とFTPクライアントが複数のネットワークを介して接続されるようにしても良い。また、FTPサーバ1においては、FTP転送処理部11、信号処理部12、記録処理部13が互いに一体化して形成されるように説明したが、それぞれ別体として構成されるようにしてもよいし、各部の内、いずれか1つが別対として構成されるようにしてもよい。さらに、各部の一部が別体として構成されるようにしてもよい。
また、構文解析を行うデータはXML文書であるように説明したが、XML文書と同様の構成のマークアップ言語であれば、それ以外の文書ファイルであってももちろんよい。また、上述したエラーメッセージおよび応答メッセージは図10Aまたは図10Bに示される例以外であってもよい。
さらに、図1においては、記録媒体として光ディスク4を用いるように説明したが、これに限らず、例えば、テープデバイスや磁気ディスク、光磁気ディスク、または半導体メモリ等であってもよい。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図1のFTPサーバ1は、図11に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図11において、パーソナルコンピュータ200のCPU201は、ROM(Read Only Memory)202に記憶されているプログラム、または記憶部213からRAM203にロードされたプログラムに従って各種の処理を実行する。RAM203にはまた、CPU201が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU201、ROM202、およびRAM203は、バス204を介して相互に接続されている。このバス204にはまた、入出力インタフェース210も接続されている。
入出力インタフェース210には、キーボード、マウスなどよりなる入力部211、CRT、LCDなどよりなるディスプレイ、並びにスピーカなどよりなる出力部212、ハードディスクなどより構成される記憶部213、モデムなどより構成される通信部214が接続されている。通信部214は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース210にはまた、必要に応じてドライブ215が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア221が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部213にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図11に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア221により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM202や、記憶部213に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
1 FTPサーバ, 2 ネットワーク, 3 FTPクライアント, 4 光ディスク, 11 FTP転送処理部, 12 信号処理部, 13 記録処理部, 21 FTPインタフェース処理部, 22 メモリ, 23 XMLパーサ, 24 XMLイニシャライズ, 31 XML抽出部, 32 構文解析部, 33 データ変換部, 41 XML文書A, 42 内部データ(構造体), 43 XML文書B, 200 パーソナルコンピュータ