(57)【要約】【課題】  本発明は、ＣＳＶ圧縮ＸＭＬ文書を省リソースのままで、圧縮されていない文書と同様の感覚で扱えるようにする方法に関し、ＣＳＶ圧縮文書を連想配列に取り込み、連想配列上でＣＳＶ化を解く処理、メモリ領域サイズの管理を行う。【解決手段】  レコード形式の大容量ＸＭＬ文書について、複数の処理対象外要素をＣＳＶ形式で繋いでまとめておき、データ処理時に、ヘッダよりＣＳＶ化要素の種類を読取って、応用ソフトから呼ばれたとき、ＣＳＶ化した要素については、ＣＳＶ化を解いてアクセスさせるようにし、ＣＳＶ化を解いたレコードとその数を管理することによって、ＣＳＶ化を意識させずに省メモリ、負荷軽減を図る。【選択図】図１
2007114972.tif 000002
【特許請求の範囲】
【請求項１】
レコード形式で構成された構造化文書のデータ処理方法であって、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分けステップと、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換ステップと、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断ステップと、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセスステップと、
をコンピュータに実行させることを特徴とする構造化文書のデータ処理方法。
【請求項２】
前記構造化文書をメモリに展開するときに、前記構造化文書ファイルをストリームデータとして読み取り、前記構造化文書の各要素を配列に割り当てて格納することを特徴とする請求項１に記載の構造化文書のデータ処理方法。
【請求項３】
前記構造化文書のメモリへの展開において、前記第一の要素と前記区切り符号で一括に表現された第二の要素をレコード毎に割り当てる第一の配列と、前記第二の要素の一括された要素内容を個々の要素内容に分解して割り当てる第二の配列とを有することを特徴とする請求項１または２に記載の構造化文書のデータ処理方法。
【請求項４】
レコード形式で構成された構造化文書のデータ処理プログラムであって、
コンピュータに、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分けステップと、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換ステップと、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断ステップと、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセスステップと、
を実行させる構造化文書のデータ処理プログラム。
【請求項５】
レコード形式で構成された構造化文書のデータ処理装置であって、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分け手段と、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換手段と、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断手段と、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセス手段と、
を有することを特徴とする構造化文書のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書として、主に、表形式で表されデータベースのように扱われるデータ型ＸＭＬ（eXtensible Markup Language）文書を対象とし、これに特化したＡＰＩ（Application Programming Interface ）を簡単化するための技術に関する。
【背景技術】
【０００２】
近年、インターネットを通して、個人、企業、自治体など、あらゆる種類のシステムが接続され、相互に連携したＷｅｂ（World Wide Web) サービスやＥＤＩ（Electronic Data Interchange)、ＥＣ(Electronic Commerce) が行われつつある。これらのシステムの実現には幅広い情報交換が必要になっており、そのデータ交換およびデータ処理において、データを構造化することによって柔軟な表現能力を持たせてたＸＭＬが、コンピュータ処理に適するため、共通基盤のフォーマットとして注目されている。
【０００３】
ＸＭＬは、１９８６年ＩＳＯ（International Organization for Standardization) で標準化されたＳＧＭＬ（Standard Generalized Markup Language）をインターネットで活用し易くするために、１９９８年２月にその基本仕様ＸＭＬ１．０がＷ３Ｃ（World Wide Web Consortium)において策定されたものである。Ｗｅｂページ作成言語であるＨＴＭＬ（HyperText Markup Language)は、タグが固定で表示に特化したものとなっており、そのタグ情報を基にコンピュータで情報を処理したいという要件に対応できない問題があった。ＸＭＬは、利用者が自由にタグを定義し、文書中の文字列に意味付けさせる言語構造であり、コンピュータによる情報処理を可能としている。
【０００４】
ＸＭＬ文書に、検索・更新・削除などの操作を施す場合、標準のＡＰＩソフトでＤＯＭ(Document Object Model）ツリー構造に展開して操作する。しかしながら、ＤＯＭツリーへの展開には元データの５〜１０倍もの膨大な動作メモリ量を必要とする上、使わない項目も一緒に展開されてしまい時間もかかる欠点があった。そこで、本発明では、ＸＭＬ文書のデータ処理に必要とするリソースを軽減し、かつ、ユーザにその仕掛けを意識させずに行わせる技術を提供する。
【０００５】
また、ＸＭＬ文書は、その特徴によって、雑誌、マニュアル、辞典など、要素内容が長い文書型ＸＭＬ文書と、伝票、予定表など、タグ数が多く、要素内容が短いデータ型ＸＭＬ文書の二つに分類されるが、本発明は、主にデータ型ＸＭＬ文書を対象とし、とくに、表形式のような形で表され、データベースのように扱われるＸＭＬ文書に特化して、ＡＰＩの簡単化を図るものである。
【０００６】
以下、さらに、従来のＸＭＬ文書の抱える問題点をクリアにすべく、ＸＭＬ技術、ＡＰＩの現状、および先願技術について述べる。
（１）ＸＭＬについて
ここで、ＸＭＬ規格に基づき、専門用語の呼び方を定めておく。一対の”< ”と”> ”で囲まれた文字列をタグ、”< 文字列> ”を開始タグ、”</文字列> ”を終了タグ、開始タグから終了タグまでの文字列全体を要素、開始タグと終了タグで挟まれた文字列を要素内容、タグ内に記述される要素の名前を要素名( あるいはタグ名) 、要素に対する付加情報を属性と呼ぶ。
【０００７】
構造化文書は、文書自身の中にタグを埋め込む形でデータ構造を記述する。データ構造をタグとして文書に埋め込んだ構成を採ることにより、データ項目の追加、削除、変更に対して柔軟性と拡張性を持たせることができる。また、タグ名に、人が読んで意味のある名前を付けることにより、データに視認性を持たせることが可能となる。
（２）ＸＭＬ文書を扱う標準的なＡＰＩ
代表的な構造化文書であるＸＭＬ文書では、応用ソフトからＸＭＬ文書を扱うために、ＤＯＭ (Document Object Model)と、ＳＡＸ (Simple API for XML）と呼ばれる二つの標準的なインターフェイス（ＡＰＩ）規格が定められている。ＳＡＸは、ストリーム形式でＸＭＬ文書を読み取るため、メモリ消費が小さく、一般に高速である。したがって、時系列の出力で参照するだけの簡単な処理に向いている。
【０００８】
一方、ＤＯＭは、一般に低速でメモリ消費が大きい欠点があるが、文書の要素を階層的なツリー状に展開するため、複雑な処理内容でもプログラムが組み易いという特徴を持っているため、ＸＭＬ文書の更新には主にＤＯＭが使われる。
（３）省リソース化のための先願技術（図１７参照）
標準ＡＰＩ (ＤＯＭ）が大量に動作メモリを消費し、処理速度が遅いのは、データ処理に使わない要素も含め全要素をメモリ上に展開するからである。処理速度、メモリ量は、ＸＭＬ文書の要素数に比例する。本願出願人は、これらの不便さを解決するために、「ＸＭＬ  ＣＳＶ圧縮」という方法を先願（特許文献１、２、３）している。この方法は、ＸＭＬ文書中の要素を、ランダムアクセスが必要な要素と、一括アクセスでいい要素の２つのグループに分け、複数個の一括アクセス要素をＣＳＶ (Comma Separated Values) 形式で一つの要素にまとめる変換を施すことによって、実質的な要素数を減らし、標準ＡＰＩのメモリ使用量を削減するとともに、高速化を実現するものである。
【特許文献１】特開２００３−２０３０６７号公報
【特許文献２】特願２００４−０８２５８９号公報
【特許文献３】特願２００５−５０６７０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記したように、ＸＭＬは、柔軟なデータ表現形式である反面、標準のＡＰＩソフト（ＤＯＭ）でツリー構造に展開して操作する時には、大量のメモリを消費し、ＣＰＵ負荷を重くする欠点を抱える。本願出願人は、先に、ＸＭＬ応用ソフトにおいて、ＸＭＬ文書の処理対象外要素をＣＳＶ形式にしてＣＰＵ負荷の軽減と、省メモリ化を図る「ＸＭＬ  ＣＳＶ圧縮」を提案してきた。
【００１０】
しかしながら、先願の技術では、ＣＳＶ圧縮されたＸＭＬ文書を応用ソフトの中でデータ処理する場合、ＣＳＶ化していない要素（生要素）と、ＣＳＶ化した要素（ＣＳＶ化要素）を区別し、操作する必要があった。ＣＳＶ化していない要素はそのまま使えるが、ＣＳＶ化した要素は、一旦、ＣＳＶ化を解いてから使うといった具合である。このため、リソースの削減にはなるものの、ユーザが２種類の要素を区別し意識して別々に扱う必要があり、応用ソフトのプログラミングが煩雑で手間を要する問題があった。
【００１１】
そこで、本発明では、レコード形式の大容量ＸＭＬ文書について、複数の処理対象外要素をＣＳＶ形式で繋いでまとめておき、データ処理時に、ヘッダよりＣＳＶ化要素の種類を読取って、応用ソフトから呼ばれたとき、ＣＳＶ化した要素については、ＣＳＶ化を解いてアクセスさせるようにし、また、ＣＳＶ化を解いたレコードとその数を管理することによって、ＣＳＶ化を意識させずに省メモリおよび負荷軽減を図る技術を提供する。
【課題を解決するための手段】
【００１２】
第一の発明は、レコード形式で構成された構造化文書のデータ処理方法であって、前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分けステップと、前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換ステップと、応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断ステップと、前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセスステップと、をコンピュータに実行させることを特徴とする構造化文書のデータ処理方法に関する。
【００１３】
すなわち、第一の発明によれば、要素区分け手段が、構造化文書の各レコードにある複数の要素について、個々にアクセスすべき対象となる第一の要素と、一括りにアクセスすべき第二の要素とに区分けし、圧縮変換手段が、この一括アクセス対象として区分けされた第二の要素を、レコード毎に区切り符号によって繋げて一つの要素として圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納しておき、要素判断手段が、応用ソフトによって前記レコード内の複数の要素にアクセスする際に、ヘッダ情報を最初に読み込んで、当該要素が圧縮変換された第二の要素に該当するか否かについて前記ヘッダ情報から判断し、要素アクセス手段が、当該要素が第二の要素に該当しない場合には、当該要素内容をそのままアクセスさせ、また、当該要素が第二の要素に該当する場合には、区切り符号で表現された当該要素内容を個々の要素内容に分解し、メモリ上に展開した後にアクセスさせる構成をとることによって、使用メモリ容量の削減とＣＰＵの負荷逓減が図られるとともに、応用ソフト側からは意識しないで対象要素へのアクセスが実現される。
【００１４】
第二の発明は、前記構造化文書をメモリに展開するときに、前記構造化文書ファイルをストリームデータとして読み取り、前記構造化文書の各要素を配列に割り当てて格納することを特徴とする上記第一の発明に記載の構造化文書のデータ処理方法に関する。
【００１５】
すなわち、第二の発明によれば、構造化文書ファイルをシーケンシャルにストリームデータとして読み取り、構造化文書の各要素に対しメモリ上で配列に割り当て格納することになるので、ファイルに何度もアクセスを繰り返して読み取る必要がなく、メモリが削減でき、効率的に高速にメモリ展開を図ることが可能となる。
【００１６】
第三の発明は、前記構造化文書のメモリへの展開において、前記第一の要素と前記区切り符号で一括に表現された第二の要素をレコード毎に割り当てる第一の配列と、前記第二の要素の一括された要素内容を個々の要素内容に分解して割り当てる第二の配列とを有することを特徴とする上記第一または第二の発明に記載の構造化文書のデータ処理方法に関する。
【００１７】
すなわち、第三の発明によれば、構造化文書をメモリに展開する際に、レコード毎に、個々がアクセス対象である第一の要素と区切り符号で一つに圧縮した第二の要素を割り当てた第一の配列と、一括された第二の要素内容を個々の要素内容に分解した第二の配列をメモリに保持することになるので、同一レコードがアクセスされた場合に、すでに圧縮要素が展開され、その分解された要素内容の結果をそのまま渡すことが可能となる。
【発明の効果】
【００１８】
上記してきた発明により以下の効果が生まれる。
【００１９】
これまで、構造化文書における要素の圧縮は、レコード内要素を区切り符号によって一括化して減らす要素の割合にほぼ比例して、主記憶メモリの消費量を減らす効果を生むが、応用ソフト側からすると、レコード内の生要素と一括化要素とを区別してプログラムを組む必要があった。本発明によれば，これを意識せずにプログラミングすることができるため，一括化圧縮要素による性能改善効果と、プログラミングの容易さとを両立させることが可能となる。
【００２０】
また、構造化文書ファイルをシーケンシャルにストリームデータとして読み取り、構造化文書の各要素に対しメモリ上で配列に割り当てる構成をとることにより、ファイルに何度もアクセスを繰り返して読み取る必要がなくなるため、メモリを削減でき、効率的に高速にメモリ展開を図ることが可能となる。
【００２１】
さらに、構造化文書をメモリに展開する際に、レコード毎に、個々がアクセス対象である第一の要素と区切り符号で一つに圧縮した第二の要素を割り当てた第一の配列と、一括された第二の要素内容を個々の要素内容に分解した第二の配列をメモリに保持することになるので、同一レコードがアクセスされた場合に、すでに圧縮要素が展開されているため、その分解された要素内容の結果をそのまま渡すことが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、図面にもとづいて本発明の実施形態を説明する。実施例において、構造化文書は、表形式で表されデータベースのように扱われるデータ型のＸＭＬ文書を対象としいるため以下ではＸＭＬ文書と表現し、また、このＸＭＬ文書のレコード内の要素を区切り符号を使って一括した圧縮形式については、カンマだけでなく様々な文字列の適用が可能であるが、ここでは、便宜上、ＣＳＶ圧縮として表現する。
【００２３】
図１は、本発明の実施の形態になる構造化文書におけるデータ処理システムの基本構成を示す。データ処理システムは、エンドユーザ４０のＰＣ端末、アプリ開発者５０によって開発された様々なアプリケーションソフト３０、およびネットワークを介して接続されたサーバ等の装置に格納されたＣＳＶ圧縮ＸＭＬ文書Ａ、Ａ’（ＣＳＶ圧縮された構造化文書）、データ処理プログラム１０、およびアプリケーションソフト３０へのデータの受け渡しを行うＡＰＩソフト２０（ＸＭＬパーサ）で構成される。
【００２４】
さらに、データ処理プログラム１０は、構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分手段１１、第二の要素として対象となるレコード内の要素をＣＳＶ形式で繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮／復元変換手段１２、アプリケーションソフト３０（応用ソフト）によって前記レコード内の複数の要素にアクセスする際に、ＣＳＶ圧縮情報用のヘッダ情報を最初に読み込ませ、当該要素が圧縮変換された第二の要素に該当するか否かをそのヘッダ情報から判断する要素判断手段１３、および前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、ＣＳＶ圧縮された一括要素の要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセス手段１４で構成されている。
【００２５】
本データ処理システムにおいて、エンドユーザ４０は、ネットワークに接続するサーバ等の装置に格納されたアクセス対象のＣＳＶ圧縮ＸＭＬ文書Ａ、Ａ’に対し、自端末の画面上から様々なアプリケーションソフト３０を使って検索・更新の指示を行う。
【００２６】
ＣＳＶ圧縮ＸＭＬ文書Ａ、Ａ’が格納されたサーバ等の装置では、ＡＰＩソフト２０を介してデータ操作が行われ、データ処理プログラム１０によって、原ＸＭＬ文書Ａが加工処理されて、処理結果としてのＸＭＬ文書Ａ’がメモリ上に展開され、ＡＰＩソフト２０を介してアプリケーションソフト３０に戻され、エンドユーザ４０のＰＣ端末において、当該ＸＭＬ文書Ａ’は、ＸＭＬからＨＴＭＬに変換され、ブラウザによって画面に表示出力される。
【００２７】
図２は、本発明の実施の形態になる構造化文書のデータ処理システムを実現するコンピュータのハードウエア構成例を示す。
【００２８】
図に示すコンピュータ１００は、バス１０９によって互いに接続するＣＰＵ（Central Processing Unit ）１０１、メモリ１０２、入力装置１０３、出力装置１０４、補助記憶装置１０５、媒体駆動装置１０６、可搬記録媒体１０７、およびネットワーク接続装置１０８を備えた構成となっている。但し、同図に示す構成は一例であり、これに限るものではない。
【００２９】
ＣＰＵ１０１は、当該コンピュータ１００全体を制御する中央処理装置であり、メモリ１０２は、プログラムを実行したり、データ更新等を行う際に、補助記憶装置１０５（あるいは可搬型記録媒体１０７）に記憶されているプログラムあるいはデータを一時的に格納するＲＡＭ（Random Access Memory）等のメモリである。また、ＣＰＵ１０１は、メモリ１０２に読み出したプログラムおよびデータを用いて、上述した図１の要素区分手段１１、圧縮／復元変換手段１２、要素判断手段１３、および要素アクセス手段１４の機能を実現させる。
【００３０】
補助記憶装置１０５は、磁気ディスク、光ディスク、光磁気ディスク等を装着した記憶装置であり、上記本発明の各機能を実現させるためのプログラムおよびデータ等が格納されている。データとしては、外部から入力された原ＸＭＬ文書Ａ、処理結果としてのＸＭＬ文書Ａ’等が一時的に記憶される。また、媒体駆動装置１０６は、例えば、ＦＤ（Fleible Disk）、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、光磁気ディスク等の可搬型記録媒体１０７に記憶されているプログラムおよびデータ等を読み出す。
【００３１】
ネットワーク接続装置１０８は、ネットワークに接続して外部の情報処理装置とプログラムおよびデータ等の送受信を可能にするものである。
【００３２】
以下の実施例では、図３において、本発明のＣＳＶ圧縮したＸＭＬ文書を扱う基本的なＡＰＩを示し、また、図４、図５、図６において、このときのＸＭＬ文書の管理と格納、アクセスのイメージを示す。また、図７、図８において、本ＡＰＩを用いたJavascript（ジャバスクリプト）による応用ソフトの例を示す。さらに、図９〜１４において、図３の本ＡＰＩの各メソッドのフローチャートを示す。
【００３３】
図３は、本発明の実施の形態になるアプリケーション・プログラミング・インタフェース（ＡＰＩ）の形式設定例を示す。以下に、本ＡＰＩに対し、Javascriptによる具体的な設定例を示す。
（０）ＣＳＶ圧縮文書操作オブジェクトの作成：オブジェクトのコンストラクタであり、Object=new CSVCDocument として扱うデータを初期化したオブジェクトを作成する。
（１）ＣＳＶ圧縮文書のロード：ファイルの読み込み処理をObject.openCSVCFile ( 入力ＣＳＶ圧縮ファイル名，レコード要素名）、戻り値を”エラーのステイタス”とする。補助記憶装置１０５に格納されたファイルをメモリ１０１にロードし、ＣＳＶ圧縮ファイル名とレコード要素名のデータを取得し、ＣＳＶ圧縮文書ファイルのヘッダを読み取って、データをデータ用と管理用連想配列に格納する。
（２）ＣＳＶ圧縮文書のクローズ：ファイルのクローズ処理をObject.closeCSVCDocument( ) 、戻り値を”エラーのステイタス”とする。
（３）ＸＭＬ文書のレコード数：レコード数の取得処理をObject.recordLength( )、戻り値を”オープン時に指定したレコードのレコード数”とする。
（４）レコード要素の読出し：レコード要素の読出し処理をContent = Object.getElement （レコード番号，要素名 )、戻り値を”要素内容，またはエラーのステイタス”とする。
（５）レコード要素の書込み：レコード要素の書込み処理をObject.putElement ( レコード番号，要素名，要素内容 )、戻り値を”エラーのステイタス”とする。
【００３４】
図４は、本発明の実施の形態になる構造化文書の圧縮オブジェクト（管理用連想配列）のデータ構成例を示す。図３（１）のオープン処理において、ＣＳＶ圧縮文書ファイルを読み取り、当該データを管理用連想配列に格納する。ＸＭＬ文書のヘッダを読み取って、レコード中の要素とＣＳＶ化要素の関係をデータ管理用の連想配列として記憶する。
【００３５】
連想配列名には、例えば”DocArray”のようにオブジェクト名”Doc ”を冠する。レコード要素は１次元配列となり、各レコードは１次元配列の各要素が連想配列を取る。この連想配列は、要素名を添字として格納内容の要素内容が読み書きされる。
【００３６】
例えば、項目２００１には、ファイル名：fname として“従業員名簿-csv.xml”、項目２００２には、レコード名：recname として“従業員”、項目２００３には、レコード数：recnumとして”１０００”、項目２００４には、現行レコード番号：cur ＿recno として”１”，項目２００５には、データ用連想配列名：arrayname として“Doc Array ”、項目２００６には、ＣＳＶデータ用連想配列名：csv ＿arrayname として“Doc CSVArray”、項目２００７には、CSV 要素名：csvelem として“情報”、項目２００８には、putElementメソッド使用の有無：putElementFlagとして”１ or ０”、および項目２００９には、図６ (a)(b)(c)の管理用配列名他として“Doc AccessRecord”、“Doc ElementDisc ”などが格納される。
【００３７】
図５は、本発明の実施の形態になる圧縮された構造化文書のレコード要素を格納したデータ用の配列例（その１−連想配列の例）を示す。図５のデータ用配列では、ＣＳＶ圧縮文書の各レコードがそのまま第１の一次元配列の連想配列に格納された形になっている。このうち，ＣＳＶ要素はアクセスされたときに，さらに、第２のデータ用１次元配列の連想配列に展開される。この連想配列名には、先と同様の命名法で、例えば”DocCSVArray ”と付ける。この第２の連想配列は、先に述べたＣＳＶ圧縮ヘッダから読み込んだ情報に基づいて、ＣＳＶ化された要素名を添字として格納された要素内容がアクセスされる。
【００３８】
例えば、第１のデータ用配列Doc Array[2]は、連想配列でメモリ展開され、“＠id”、“氏名”、“所属”、“情報”の要素名を添字とする各項目における要素内容が、それぞれ“0002”、“田中次郎”、“営業”、“一般,2333,456,tanaka＠yyyyy ”として格納されている。そして、第２のデータ用配列Doc CSVArray[1] では、アクセス対象のＣＳＶ化要素が連想配列でメモリ展開され、“役職”、“内線”、“Fax ”、“Email ”の要素名を添字とする各項目における要素内容が、それぞれ“一般”、“2333”、“456 ”、“tanaka＠yyyy”として格納されている。
【００３９】
図６は、本発明の実施の形態になる圧縮された構造化文書のレコード要素を格納したデータ用の配列例（その２−通常配列の例）を示す。ここでは、図５−１の第１の配列および第２の配列において、要素名の代わりに要素番号（第１の配列では１〜４、第２の配列では５〜８を割付け）を添字として各項目に対応させ、要素内容を格納させた例を示している。前述した図５の連想配列は、出現しない要素があった場合でもメモリは有効に使えるのに対し、レコード内に出現の有無がある要素があった場合、通常配列であるのでメモリ領域を全て取ってしまうことになるが、レコード内の要素の組が常に出現する場合には、本構成の方が適しており、より高速な処理が可能である。
【００４０】
図７は、本発明の実施の形態になるレコード毎のＣＳＶ化要素をメモリ上に展開する際の管理情報を示している。
【００４１】
（ａ）は、ＣＳＶ形式展開時に、レコードＣＳＶ化要素展開した連想配列とを対応付ける配列を示している。１次元配列でレコード数分の配列要素“Doc AccessRecord”を用い、アクセスした各レコードが、ＣＳＶ要素をDocCSVArray のどの連想配列要素に展開しているのかについて、その１次元配列の添字を格納して管理するものである。例えば、第２、第３の各レコードのCSVArrayの使用位置として、インデックス１、２が格納されている。
【００４２】
（ｂ）は、ＣＳＶ形式に書き戻した時に、レコードとＣＳＶ化要素展開連想配列とを対応付ける配列を示している。例えば、CSV ＿RecordArray の第１、第２の各レコードとして、各csvArray位置の使用レコード２、３が格納されている。
【００４３】
（ｃ）は、ＣＳＶ化要素名を判定する連想配列を示している。１次元連想配列”DocDisc ”は、レコード内の要素が、第１の連想配列DocArrayと第２の連想配列DocCSVArray のどちらに格納されているかを識別する。この配列は、初期化したときにＣＳＶ圧縮ヘッダを読込んだときに作られ、例えば、“氏名”、“所属”、“役職”・・・の要素名に対し、ＣＳＶが使用されているか否かは、”0 ”、”0 ”、”1 ”・・・のフラグによって判定する。
【００４４】
（ｄ）は、ＣＳＶ要素名およびＣＳＶ化要素名の順序を記憶する配列を示す。１次元配列  “DocOrder”も、CSV 圧縮ヘッダを読込んだとき作られる。この配列は、第２のデータ用連想配列の要素を結合して、元のＣＳＶ形式にして書き戻す際に、要素を並べる順番を与えるために用いる。プログラム言語によっては連想配列が格納順を保存しないものもあるため、順序を保存するのである。添字0 の位置にＣＳＶ要素名が格納してある。
【００４５】
なお、ＣＳＶ要素を展開する第２の連想配列DocCSVArray は、主記憶メモリを大量に消費するため、アクセス時に格納場所を新旧管理することによって、展開する数を一定数に抑えるように管理する。
【００４６】
管理する方法には、周知の技術である（１）LRU(Least Recently Used)や（２）LFU(Least Frequently Used)の論理によって格納場所が一杯になった場合、一つ場所を空けて、そこに新たに展開するＣＳＶ要素を格納する方法がある。ＬＲＵは、最も以前に使った場所を空ける方法であり、ＬＦＵは、最も使用頻度が少ない場所を空ける方法である。
【００４７】
上記ＬＲＵの論理を実現するには、カウンタで今までに使った場所の数を計数するようにすればいい。そして、計数値が連想配列の要素数を越えて、一杯になったら、次から最も古い場所を空けて、新しいＣＳＶ要素を格納する。例えば，連想配列の要素数が２５６個の場合、カウンタでゼロから始めて、計数値の番号の場所を割当てて行き、２５６を越えた時点から、２５６でモジュロを取った値( 計数値を２５６で割った余り) の場所を空けて新たに割当てればよい。
【００４８】
また、ＬＲＵの論理を実現するには、連想配列の要素を割当てたＣＳＶ要素の使用頻度を計数しておき、計数値の小さいものから場所を空けて、新たに割当てることにするものである。以上のいずれかの管理方法を採ることによって、展開ＣＳＶ要素数を一定に保つが可能となる。
【００４９】
図８は、本発明の実施の形態になるレコード毎のＣＳＶ化要素をメモリ上に展開する際の管理情報( 図７（ｃ）の変形例）を示す。以下は、図８の管理情報を例として示している。（ｃ’）の連想配列を参照して各要素の番号を求め、生要素数（図では３個）をメモリに保持しておき、これ以上の番号ならばＣＳＶ化要素と判定して、第２のメモリに展開する仕組みである。
【００５０】
本構成の図７（ｃ）の構成との大きな違いは、データ配列DocArrayおよびDocCSVArray が、連想配列から通常の配列になることである。通常配列を使うことによってアクセス速度が連想配列より高速となる。レコード内の要素の組が常に出現する場合、本構成の方が適している。
【００５１】
図９は、本発明の実施の形態になるＡＰＩを用いたプログラム例（その１−特定要素の修正）を示す。本発明のＡＰＩの応用ソフトの例を示しており、図１７における「社員名簿-csv.xml」を、本ＡＰＩを用いてシーケンシャルにアクセスするプログラムである。
【００５２】
ＣＳＶ圧縮文書用オブジェクトを作った後，openCSVCFileメソッドを用いて「社員名簿-csv.xml」をロードする。次に、for 文を用いて全レコードを走査し、getElementメソッドを用いて、「氏名」要素の要素内容を取り出し、「田中次郎」のレコードを探す。「田中次郎」のレコードが見付かったならば、その「Email 」要素の内容を「j.tanaka@yyy」に書替える。これ以降は、for 分を用いて再び全レコードを走査し、各レコードの要素名と要素内容を出力するようにしている。
【００５３】
図１０は、本発明の実施の形態になるＡＰＩを用いたプログラム例（その２−ＸＭＬ文書の更新）を示す。原本ファイル「社員名簿-csv.xml」に対して、変更箇所を記述した「従業員名簿-csv-change.xml 」で書替えて、原本ファイルを更新する場合のプログラム例である。
【００５４】
まず、原本ファイルと変更箇所ファイルをopenCSVCFikeでロードして、ＣＳＶ圧縮文書オブジェクト Doc1 、Doc2をそれぞれ作る。次に、変更箇所を１レコードづつ取り出し、原本の全レコードを走査して、id属性が一致するレコードを探す。id属性が同じレコードを見つけた場合は、そのレコードの全要素を書替える。この例では、原本を何度も走査するため、ストリーム処理の場合は、何度もディスクからデータを読み出す必要があるのに対して、データがメモリ内に展開されているので高速で処理することができる。その上、本発明では、属性、氏名、所属以外の要素はＣＳＶ形式でまとめられているため、メモリ消費を大幅に抑えることができ、しかも、本発明のＡＰＩを用いることによって、ＣＳＶ形式でまとめられている要素を意識せずに扱うことが可能となる。
【００５５】
以下に、本発明のＡＰＩオブジェクトの各メソッドのフローについて、図１１〜図１６を用いて説明する。
【００５６】
図１１は、本発明の実施の形態になる構造化文書のＡＰＩオブジェクトの作成フローを示す。実施例は、オブジェクトCSVCDocumentにおいて、図４に示すＣＳＶ圧縮文書オブジェクト（管理用連想配列）を作成するフローを示している。
【００５７】
ステップＳ１１において、種々の項目を管理するＣＳＶ圧縮文書用のオブジェクト( 管理用連想配列) 」を作成し、ステップＳ１２において、呼び出し元に戻る。
【００５８】
図１２は、本発明の実施の形態になるＣＳＶ圧縮された構造化文書ファイルのオープン処理のフローを示す。ファイルのオープン処理 openCSVCFile において、第１引数で与えたＣＳＶ圧縮文書ファイルをストリーム形式でＸＭＬ文書を読み取るＳＡＸを用いて読み取り、第２引数で与えたレコード内の要素を図５に示す第１のデータ用連想配列“DocArray”に展開するフローを示している。
【００５９】
まず、ステップＳ２１において、引数としてＸＭＬファイル名、レコード要素名を受け取り、オブジェクト( 管理用連想配列) に記憶する。
【００６０】
つぎに、ステップＳ２２において、対象ＸＭＬ文書のＣＳＶ圧縮のヘッダからＣＳＶ要素、ＣＳＶ化格納要素名を読み取り、１次元連想配列“DocCSVDisc”に、要素内容が第１のデータ用連想配列“DocArray”か第２のデータ用連想配列“DocCSVArray ”か、どちらの連想配列に格納されているか区別する情報を作成する。また、ＣＳＶ要素展開管理用の各種配列を作成する。
【００６１】
さらに、ステップＳ２１において、ＳＡＸを用いて、レコード毎に、レコード内要素とＣＳＶ要素をデータ用第１の連想配列上に展開し、かつ、展開時にレコード数を計数する。ステップＳ２１において、計数したレコード数をオブジェクトに格納する。そして、ステップＳ２１において、呼び出し元に戻る。
【００６２】
図１３は、本発明の実施の形態になるＣＳＶ圧縮された構造化文書ファイルのクローズ処理のフローを示す。圧縮された構造化文書ファイルのクローズ処理 closeCSVCDocumentは以下の通りである。
【００６３】
ステップＳ３１において、putElementメソッドを以前に使ったかどうかをＣＳＶ圧縮文書オブジェクトより読出して判定する。もし使ってなければ、ステップＳ３４において、ＣＳＶ圧縮文書ファイルは参照されただけであるので、そのままクローズする。もし使っていれば、ステップＳ３２において、ＣＳＶ縮文書ファイルは書込みがされているので、次の出力対象となるレコードが存在するかを判定する。そして、対象のレコードが全てセットされていれば、ステップＳ３４において、クローズする。
【００６４】
さらに、未だ処理していないレコードがあれば、ステップＳ３３において、次の未処理のレコードをセットする。そして、ステップＳ３５において、当該レコードのＣＳＶ要素が第２の連想配列に既に展開されているかを判定する。
【００６５】
当該レコードのＣＳＶ要素が第２の連想配列に展開済みであれば、ステップＳ３６において、当該レコードの第２の連想配列“DocCSVCArray”の内容をjoin関数を用いてＣＳＶ形式に直し、第１のデータ用連想配列“DocArray”にＣＳＶ要素の内容を置き換えながら、ステップＳ３７において、当該レコードのＣＳＶ化なし要素とＣＳＶ要素を連想配列から、ＳＡＸを用いて“DocArray”の内容をＸＭＬ文書の形式で書き出す。そして、対象となる全レコードが終了するまでステップＳ３２からステップＳ３７までの処理を繰り返し行う。
【００６６】
また、ステップＳ３５において、当該レコードのＣＳＶ要素が第２の連想配列に展開されていなければ、ステップＳ３７にジャンプして、ＳＡＸを用いたＸＭＬ文書の書き出し処理を行う。
【００６７】
ここで、上記split 関数と後述するjoin関数については、スクリプト言語では、ＣＳＶ形式の文字列を分離・結合する関数が標準でサポートされている。
【００６８】
例えば、Javascriptでは、形式文字列と分離したＣＳＶ化要素を格納する配列とを次のように指定することにより行える。
【００６９】
・分離      配列  ＝  split(区切り文字，CSV 形式文字列 )；
・結合      CSV 形式文字列  ＝  join( 区切り文字，  配列) ；
図１４は、本発明の実施の形態になる圧縮された構造化文書ファイルのレコード数読み出し処理のフローを示す。以下に、レコード数読出し処理 recordLength を示す。
【００７０】
ステップＳ４１において、ＣＳＶ圧縮文書オブジェクトに格納されているレコード数を読み出し、ステップＳ４２において、呼び出し元に戻る。
【００７１】
図１５は、本発明の実施の形態になる構造化文書の要素内容の読み出し処理のフローを示す。要素内容の読出し処理 getElement は、以下の通り。
【００７２】
ステップＳ５１において、第１引数でレコード番号、第２引数でレコード内要素名を受け取り、ステップＳ５２において、受け取った要素名がＣＳＶ化要素かどうかを連想配列“DocCSVDisc”によって判定する。もしＣＳＶ化要素でなければ、ステップＳ５３において、第１のデータ用連想配列“＿DocArray”より要素名で引いて要素内容を読出す。もしＣＳＶ化要素であれば、ステップＳ５４において、このレコードのＣＳＶ要素がメモリ上に展開されているかを１次元配列“DocAccessRecord ”によって調べる。
【００７３】
展開されていなければ、ステップＳ５５において、第２のデータ用連想配列“DocCSVArray ”の空き配列要素の番号を、１次元配列“DocAccessRecord ”に書込み、そのＣＳＶ要素をsplit 関数を用いて“DocCSVArray ”上に展開する。そして、ステップＳ５６において、格納位置、要素名を指定して、第２の連想配列より要素内容を読出す。
【００７４】
また、もしこのレコードのＣＳＶ要素がメモリ上に展開されていれば、ステップＳ５６において、“DocAccessRecord ”から、“DocCSVArray ”上の展開されている場所を読取り、“DocCSVArray ”から要素名で要素内容を読出す。以上のようにして読出した要素内容を、ステップＳ５７において、戻り値として返す。
【００７５】
図１６は、本発明の実施の形態になる構造化文書の要素内容の書込み処理のフローを示す。要素内容の書込み処理 putElement は、以下の通り。
【００７６】
まず、ステップＳ６１において、引数として、レコード番号、レコード内要素名、書込む要素内容を受け取り、ステップＳ６２において、受け取った要素名がＣＳＶ化要素かどうかを連想配列“DocCSVDisc”によって判定する。つぎに、もしＣＳＶ化要素でなければ、ステップＳ６３において、第１のデータ用連想配列“DocArray”より要素名で引いて要素内容を書込む。また、もしＣＳＶ化要素であれば、ステップＳ６４において、このレコードのＣＳＶ要素がメモリ上に展開されているか否かを１次元配列“DocAccessRecord ”によって調べる。
【００７７】
ステップＳ６４で、ＣＳＶ要素展開されていなければ、ステップＳ６５において、第２のデータ用連想配列“DocCSVArray ”の空き配列要素の番号を、１次元配列“DocAccessRecord ”に書込み、そのＣＳＶ要素をsplit 関数を用いて“DocCSVArray ”上に展開する。そして、ステップＳ６５において、格納位置、要素名を指定して、第２の連想配列に要素内容を書込む。
【００７８】
また、ステップＳ６４で、もしこのレコードのＣＳＶ要素がメモリ上に展開されていれば、“DocAccessRecord ”から、“DocCSVArray ”上の展開されている場所を読取り、“DocCSVArray ”から要素名で要素内容を書込み、ステップＳ６７において、呼び出し元に戻る。
【００７９】
上記の例では、レコード内で１個のＣＳＶ要素を持つ場合について説明したが、勿論、ＣＳＶ要素を複数個にした場合でも、ＣＳＶ圧縮文書のヘッダにおいて、その複数個のＣＳＶ要素に格納されている要素名を記述しておき、上述と同様に読み取り、２つのデータ用連想配列を用いてＡＰＩ上で管理することができる。
【００８０】
また、上記の例では、ＣＳＶ圧縮を意識させずにプログラミングできるＡＰＩが，要素内容の更新機能を備える場合について説明したが、これは、ＡＰＩに挿入・削除機能を付けた場合にも同様に適用できる。本発明の課題は、ＣＳＶ圧縮を意識させずに使わせることにあり、挿入・削除機能は本質でないため、説明を割愛している。
【００８１】
以上述べてきたように、本発明では、構造化文書全体が配列に格納されるＡＰＩの構成であるため、直感的な配列操作のみで構造化文書全体にわたっての各種データ操作が容易に行えるようになる。また、レコード要素名を与えることによってレコード要素が反映される配列構造となり、レコードの中と外が区別されて、レコード単位のオブジェクトとして扱うことが可能になる。さらに、本ＡＰＩ形式により、要素内容を別の要素名でアクセスすることが簡単に行え、レコード内の階層、要素名の変更、レコードの挿入・削除等の操作も行うことが可能となる。
【００８２】
以上述べてきた本発明の実施の態様は、以下の付記に示す通りである。
（付記１）  レコード形式で構成された構造化文書のデータ処理方法であって、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分けステップと、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換ステップと、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断ステップと、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセスステップと、
をコンピュータに実行させることを特徴とする構造化文書のデータ処理方法。
（付記２）  前記構造化文書をメモリに展開するときに、前記構造化文書ファイルをストリームデータとして読み取り、前記構造化文書の各要素を配列に割り当てて格納することを特徴とする付記１に記載の構造化文書のデータ処理方法。
（付記３）  前記構造化文書のメモリへの展開において、前記第一の要素と前記区切り符号で一括に表現された第二の要素をレコード毎に割り当てる第一の配列と、前記第二の要素の個々の要素内容を個々の要素内容に分解して割り当てる第二の配列とを有することを特徴とする付記１または２に記載の構造化文書のデータ処理方法。
（付記４）  前記第二の要素において、前記区切り符号でまとめた要素内容を個々の要素内容に分解し前記第二の配列に展開してからアクセスさせる際に、前記第二の配列が予め定めた容量を越える場合、前記第二の配列中で以前に展開した配列要素を前記区切り符号によってまとめて第一の配列に書き戻した後、書き戻した前記配列要素に個々の要素内容を展開するようにしたことを特徴とする付記１乃至３に記載の構造化文書のデータ処理方法。
（付記５）  前記メモリ上に展開した構造化文書を書き替え、レコード毎に、前記第一の要素に対するの第一の配列の内容を構造化文書として出力するとともに、前記第二の要素は、前記第二の配列に展開してなければ前記第一の配列の内容を出力し、あるいは、第二の配列要素に展開していれば個々の要素の内容を区切り符号によって一括して出力することを特徴とする付記１乃至４に記載の構造化文書のデータ処理方法。
（付記６）  前記区切り符号で一括化された要素を展開する第二の配列は、アクセス時に、カウンタによって今までに使った場所の数を計数し、最も以前に使った場所、あるいは最も使用頻度が少ない場所を空けることで、展開する数を一定数に抑えることを特徴とする付記１乃至５に記載の構造化文書のデータ処理方法。
（付記７）  レコード形式で構成された構造化文書のデータ処理プログラムであって、
コンピュータに、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分けステップと、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換ステップと、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断ステップと、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセスステップと、
を実行させる構造化文書のデータ処理プログラム。
（付記８）  レコード形式で構成された構造化文書のデータ処理装置であって、
前記構造化文書におけるレコード内の複数の要素を、個々にアクセスすべき第一の要素と一括してアクセスすべき第二の要素とにグループ分けする要素区分け手段と、
前記第二の要素として対象となる前記レコード内の要素を区切り符号によって繋げて一つの要素に圧縮変換し、当該要素の種類を表すヘッダを付してメモリに格納する圧縮変換手段と、
応用ソフトによって前記レコード内の複数の要素にアクセスする際に、前記ヘッダ情報を最初に読み込ませ、当該要素が前記圧縮変換ステップで圧縮変換された前記第二の要素に該当するか否かを前記ヘッダ情報から判断する要素判断手段と、
前記レコード内の要素が前記第二の要素に該当しない場合に、当該要素内容をそのままアクセスさせ、また、前記レコード内の要素が前記第二の要素に該当する場合には、前記区切り符号で表現された要素内容を個々の要素内容に分解しメモリ上に展開した後にアクセスさせる要素アクセス手段と、
を有することを特徴とする構造化文書のデータ処理装置。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施の形態になる構造化文書におけるデータ処理システムの基本構成を示す図である。
【図２】本発明の実施の形態になる構造化文書のデータ処理システムを実現するコンピュータのハードウエア構成例を示す図である。
【図３】本発明の実施の形態になるアプリケーション・プログラミング・インタフェース（ＡＰＩ）の形式設定例を示す図である。
【図４】本発明の実施の形態になる構造化文書の圧縮オブジェクト（管理用連想配列）のデータ構成例を示す図である。
【図５】本発明の実施の形態になる圧縮された構造化文書のレコード要素を格納したデータ用の配列例（その１−連想配列の例）を示す図である。
【図６】本発明の実施の形態になる圧縮された構造化文書のレコード要素を格納したデータ用の配列例（その２−通常配列の例）を示す図である。
【図７】本発明の実施の形態になるレコード毎のＣＳＶ化要素をメモリ上に展開する際の管理情報を示す図である。
【図８】本発明の実施の形態になるレコード毎のＣＳＶ化要素をメモリ上に展開する際の管理情報( 図７（ｃ）の変形例）を示す図である。
【図９】本発明の実施の形態になるＡＰＩを用いたプログラム例（その１−特定要素の修正）を示す図である。
【図１０】本発明の実施の形態になるＡＰＩを用いたプログラム例（その２−ＸＭＬ文書の更新）を示す図である。
【図１１】本発明の実施の形態になる構造化文書のＡＰＩオブジェクトの作成フローを示す図である。
【図１２】本発明の実施の形態になるＣＳＶ圧縮された構造化文書ファイルのオープン処理のフローを示す図である。
【図１３】本発明の実施の形態になるＣＳＶ圧縮された構造化文書ファイルのクローズ処理のフローを示す図である。
【図１４】本発明の実施の形態になる圧縮された構造化文書ファイルのレコード数読み出し処理のフローを示す図である。
【図１５】本発明の実施の形態になる構造化文書の要素内容の読み出し処理のフローを示す図である。
【図１６】本発明の実施の形態になる構造化文書の要素内容の書込み処理のフローを示す図である。
【図１７】先願発明におけるアクセス対象外要素を圧縮した場合の構造化文書の構成を示す図である。本発明の実施の形態になる不正防止システムの基本構成（実施例２）を示す図である。
【符号の説明】
【００８４】
１０  データ処理プログラム
１１  要素区分手段
１２  圧縮／復元変換手段
１３  要素判断手段
１４  要素アクセス手段
２０  ＡＰＩソフト( ＸＭＬパーサ）
３０  アプリケーション・ソフト
４０  エンドユーザ
５０  アプリ開発者
１００  コンピュータ
１０１  ＣＰＵ
１０２  メモリ
１０３  入力装置
１０４  出力装置
１０５  補助記憶装置
１０６  媒体駆動装置
１０７  可搬記録媒体
１０８  ネットワーク接続装置
１０９  バス
【図１】
2007114972.tif 000003
【図２】
2007114972.tif 000004
【図３】
2007114972.tif 000005
【図４】
2007114972.tif 000006
【図５】
2007114972.tif 000007
【図６】
2007114972.tif 000008
【図７】
2007114972.tif 000009
【図８】
2007114972.tif 000010
【図９】
2007114972.tif 000011
【図１０】
2007114972.tif 000012
【図１１】
2007114972.tif 000013
【図１２】
2007114972.tif 000014
【図１３】
2007114972.tif 000015
【図１４】
2007114972.tif 000016
【図１５】
2007114972.tif 000017
【図１６】
2007114972.tif 000018
【図１７】
2007114972.tif 000019