(57)【要約】【課題】構造化文書を、アプリケーションが操作しやすい形式に変換する構造化文書の展開方法において、複雑な知識を要せずに、操作できる形式に展開する。【解決手段】直感的な配列操作のみで、構造化文書全体に渡る各種データ操作が容易に行えるように、２段構えの連想配列を採り，双方の連想配列を連続番号（Ｔａｇ１，Ｔａｇ２）でリンクし，前段の連想配列（Ｔａｇ１）から要素名でもって，後段の連想配列（Ｔａｇ２）をアクセスできるようにするととともに，後段を２次元連想配列にして，階層を表すようにした。【選択図】図１
2007058623.tif 000002
【特許請求の範囲】
【請求項１】
レコードから構成される構造化文書を、要素に分解し，メモリに展開する構造化文書の展開方法において、
前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，
２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップとを有する
ことを特徴とする構造化文書の展開方法。
【請求項２】
前記連続番号を割り付け、格納するステップは、
前記レコード要素の上位階層を、１次元目の添字として、第１の連続番号割り付け、格納するステップと、
前記レコード要素内の階層を、２次元目の要素として、第２の連続番号を割り付け、格納するステップからなる
ことを特徴とする請求項１の構造化文書の展開方法。
【請求項３】
前記第１の連続番号を割り付け、格納するステップは、
指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有する
ことを特徴とする請求項２の構造化文書の展開方法。
【請求項４】
レコードから構成される構造化文書を、要素に分解し，メモリに展開し、展開したレコードを処理する構造化文書の処理方法において、
前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，
２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップと、
前記パスを含む要素名/属性名で指定されたレコードの前記要素内容／属性値を、前記連続番号を使用して、処理するステップと、
前記連続番号で前記要素内容／属性値を読み出し、前記構造化文書に書き出すステップとを有する
ことを特徴とする構造化文書の処理方法。
【請求項５】
前記処理ステップは、前記連続番号により、異なる前記要素内容／属性値を持つ連想配列に、移し変えるステップからなる
ことを特徴とする請求項４の構造化文書の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（eXtensible Markup Language）等で記載された構造化文書のデータ展開方法及びデータ処理方法に関し、特に、ＸＭＬ文書を使用するＸＭＬアプリケーションの開発、利用を容易とするための構造化文書のデータ展開方法及びデータ処理方法に関する。
【背景技術】
【０００２】
近年，インターネットを通して，個人，企業，自治体など，あらゆる種類のシステムが接続され，これらが連携して，ＷｅｂサービスやＥＤＩ（Electronic Data Interchange），ＥＣ(Electronic Commerce)が行われている。このために、幅広い情報交換が必要になっており、データ交換、データ処理に、ＸＭＬ(eXtensible Markup Language)が、データを構造化する柔軟な表現能力を持ち，コンピュータ処理に適するため、共通基盤のフォーマットとして注目されている。
【０００３】
ＸＭＬは，１９８６年に、ＩＳＯで標準化されたＳＧＭＬ(Standard Generalized Markup Language)を、インターネットで活用し易くするために，１９９８年２月に、その基本仕様ＸＭＬ１．０が、Ｗ３Ｃ(World Wide Web Consortium)において、策定されたものである。
【０００４】
Ｗｅｂページ作成言語であるＨＴＭＬ(Hyper Text Markup Language)は、タグが固定で、表示に特化したものとなっており，タグ情報を基にコンピュータで、情報を処理したいという要件に対応できない問題があった。ＸＭＬは，利用者が、自由にタグを定義でき，文書中の文字列に意味付けができる言語構造を持ち，コンピュータで情報処理できる。
【０００５】
ここで，ＸＭＬ規格に基づき，用語の呼び方を定めておく。一対の"<- ->"で囲まれた文字列をタグ，"<文字列>"を開始タグ，"</文字列>"を終了タグ，開始タグから終了タグまでの文字列全体を要素，開始タグと終了タグで挟まれた文字列を要素内容，タグ内に記述される要素の名前を要素名(あるいはタグ名)，要素に対する付加情報を属性と呼ぶ。
【０００６】
このような構造化文書は，文書自身の中にタグを埋め込む形で，データ構造を記述する。データ構造を、タグとして文書に埋め込んだ構成を採ることにより，データ項目の追加、削除、変更に対して、柔軟性と拡張性を持つ。また、タグ名に，人が読んで意味のある名前を付けることにより，データに、視認性を持たせることができる。
【０００７】
このＸＭＬ文書を，検索・更新・削除などの操作を施す場合には、その処理を行うアプリケーションソフトが、処理しやすいデータ形式に、ＸＭＬ文書を展開する必要がある。図９に示すように、ＸＭＬ文書ファイル１００を、ＡＰＩ（Application Programming Interface）ソフトである基盤ソフト（構造化文書展開ソフト）１１０が、読み込み、標準形式に、メモリに展開する。この展開された文書を、データ検索・更新のアプリケーションソフト１１２を使用して、ユーザが、検索、更新を行う。基盤ソフト１１０は、検索・更新されたデータ形式の文書を,ＸＭＬ文書ファイル１０２に書き込む。
【０００８】
代表的な構造化文書であるＸＭＬ文書では、応用（アプリケーション）ソフトからＸＭＬ文書を扱うために、ＤＯＭ (Document Object Model)と，ＳＡＸ (Simple API for XML)と呼ばれる二つのＡＰＩ(Application Programming Interface)規格が標準化されている。
【０００９】
ＸＭＬのＡＰＩソフトは、パーサ(Paser)と呼ばれる。異なるＸＭＬパーサを使って、様々なアプリケーションを開発する場合に，常に同じＡＰＩで、ＸＭＬデータを操作することができるようになるので，開発効率が向上し，ＸＭＬプログラミングのノウハウの蓄積が可能になる。
【００１０】
２つのＡＰＩのうち、ＳＡＸは、メモリ消費が小さく，一般に高速だが，時系列出力で，参照するだけの簡単な処理に向くという特徴を持つ。一方、ＤＯＭは，一般に低速で，メモリ消費が大きいが，文書の要素を、階層的なツリー状に展開するため，複雑な処理内容でも、プログラムが組み易いという特徴を持つ。このため，データの更新やランダム・アクセスを伴うＸＭＬデータ処理では，ＤＯＭを用いることが多い。
【００１１】
図１０は、ＸＭＬ文書の説明図、図１１及び図１２は、第１の従来の技術であるＤＯＭの説明図である。図１０のＸＭＬ文書は、製品のカタログの例を示し、開始タグ＜カタログ＞と終了タグ</カタログ＞で囲まれた文字列が、カタログの内容（要素内容）を表記し、その中で、開始タグ＜モデル名＞と終了タグ＜/モデル名＞で囲まれた文字列（ＭＳ３６０）が、モデル名の要素内容であり、開始タグ＜部品  タイプ＝‥‥＞と終了タグ＜/部品＞で囲まれた文字列が、その部品の要素、要素内容である。
【００１２】
図１１に示すように、ＸＭＬパーサが、ＸＭＬデータ中の要素を認識すると，ＤＯＭの場合は、それを基に、ＤＯＭツリーを生成する。即ち、プロセッサは、ＸＭＬデータを一気に読み込んで、構文解析し，メモリ上にツリーを展開する（このツリーを「ＤＯＭツリー」と呼ぶ）。ＤＯＭでは，このメモリ上に、展開されたＤＯＭツリーにアクセスしたり，要素を追加・削除することで、ＸＭＬデータの構造を、変更することができる。このツリー上の各要素にランダムに、アクセスするためのインターフェイスを定義したものが、ＤＯＭのＡＰＩである。
【００１３】
ＤＯＭツリーのオブジェクトは，プログラミング言語やＯＳにかかわらず、同じ構造であるので，プログラミング言語やプラットフォームに依存しないアプリケーション開発が可能である。とりわけ，ツリーに、ランダムにアクセスすることができるので，ＸＭＬデータの構造を大きく変更したい場合には、ＤＯＭが有効である。
【００１４】
ＤＯＭは，オブジェクトを使用してＸＭＬデータをモデル化する。オブジェクト指向技術において、オブジェクトは、プロパティとメソッドで構成されるように，ＤＯＭのオブジェクトも、「属性」(オブジェクトが保持するデータや関連情報)と、「メソッド」（オブジェクトの振る舞いを制御する関数）で構成される。
【００１５】
ＤＯＭは、（ａ）「ＸＭＬの構成要素という観点」から見たインターフェイスであるＤｏｃｕｍｅｎｔやＥｌｅｍｅｎｔなどのオブジェクトと，（ｂ）「ツリー構造上の観点」から見たインターフェイスであるＮｏｄｅオブジェクトとの，２つの観点を持つ。従って、ＸＭＬの要素を表すオブジェクトは、ＥｌｅｍｅｎｔであるとともにＮｏｄｅでもある。
【００１６】
ＤＯＭツリーにアクセスする場合は、Ｎｏｄｅオブジェクトだけを使って，ある程度のツリー操作が行えるようになっており、例えば，図１０に示す部品表のＸＭＬ文書の場合，ＤＯＭパーサによって、図１１のように、メモリ上に、ＤＯＭツリーとして展開される。
【００１７】
図１１では、オブジェクトの型として見ると、「カタログ」が、ドキュメントエレメント型であり、「部品」が、ノードリスト型であり、「名称」、「型番」、「クロック」、「キャッシュ」、「備考」もNodelist型であり、「オプション」が、ノード型であり、「タイプ」が、Named Node Map型である。
【００１８】
そして、各型が、それぞれ異なるメソッド（オブジェクトの振る舞い）を持つ。例えば、Nodelist型では、メソッドとして、「get Element by Tag Names」,「first Child」,「next Sibling」を、Node型では、「has ChildNodes」、「childNodes」、「nodeName」等を持つ。
【００１９】
ここで、ＤＯＭでのデータの更新処理は，図１２のように、ＸＭＬ文書の読み取り後、メモリ上に、図１１のようなＤＯＭツリーに展開する。ＤＯＭツリーのルート要素を取得し、子要素（Child Element）として、レコード要素を取得し、ノードの兄弟関係を辿って、対象の要素オブジェクトをアクセスする（探す）。そして，対応するメソッドを用いて、要素名や要素内容を書き換えて，ＸＭＬ文書を書き出すといった操作を行う（例えば、特許文献１参照）。
【００２０】
このように，ＤＯＭは，レコードの挿入、削除，要素名の変更，レコード内データ構造の変更等，どんなデータ操作でもできる利点があるものの，一方で，プログラミングが複雑であり，要素のアクセスには，親子，兄弟関係を辿る必要がある。
【００２１】
図１３乃至図１５は、第２の従来技術の説明図であり、連想配列を用いる方法を示す。この方法は、Ｓｃｒｉｐｔ言語で、ＸＭＬを扱う場合に、個別にプログラムで採られる手法であり，ＡＰＩソフトの形にはなっていない。ＸＭＬ文書を前述のＤＯＭ展開した後，レコードの部分を取り出して，要素名を、添字の連想配列に、要素内容を格納して扱う。ここで、配列の添字が、文字列の配列の場合を、「連想配列」と呼んでいる。
【００２２】
例えば，前述の図１０の部品のカタログの場合，レコードの部分（ＣＰＵキット等）を取り出して，連想配列Ａｒｒａｙ［１］，［２］に、図１４のように格納する。これらは、図１３の格納及び指定法に示すように、１次元の添字Ａｒｒａｙ［１］，［２］が、レコード番号を指定し，２次元の添字["名称“]が、レコード中の要素名で指定される連想配列の要素内容（ＣＰＵキット等）を指定する。１次元の添字のレコード番号（数字「１」、「２」）と，２次元の添字の要素名とで，この連想配列のアドレスが指定され，格納した要素内容が取り出し，書き込みがなされる（例えば、特許文献２参照）。
【００２３】
即ち、図１５のフロー図に示すように、ＸＭＬ文書を読み出し、前述のＤＯＭ展開した後，対象とするレコードの部分を取り出して，要素名を、添字の連想配列に、要素内容を格納する。次に、１次元の添字のレコード番号（数字「１」、「２」）と，２次元の添字の要素名とで，この連想配列のアドレスを指定し、格納した要素内容をアクセスし、更新する。ここで、要素名は、単なる添字のため、変更できない。
【００２４】
更に、１次元の添字のレコード番号（数字「１」、「２」）と，２次元の添字を数え上げ、格納した内容を出力する。ここで、連想配列だけでは、元のＸＭＬ文書に戻すことができないため、元のＸＭＬ文書の取り出した部分に、乗せる形で、ＸＭＬ文書として、書き出す（表示、印刷する）。
【００２５】
この連想配列方法の利点は，連想配列格納後のプログラミングが簡単なことである。即ち、親子関係や、兄弟関係を排除しているため、これらを考慮しないで、アプリケーションソフトを開発できる。
【特許文献１】特開２００３−６７４０３号公報
【特許文献２】特表２００２−５１７８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
従来の代表的なＡＰＩであるＤＯＭ (Document Object Model)は，ＸＭＬ文書の階層構造の親子，兄弟関係を、全てリスト形式で扱うようになっており，どんな複雑なＸＭＬ文書に対しても、汎用に使える利点がある。しかし，このＸＭＬ標準ＡＰＩに関する専門知識（オブジェクトの各型と、その型のメソッド）が必要であり，プログラミングが難しいという問題があった。
【００２７】
即ち、アプリケーションソフトでは、ＸＭＬ文書を，ＡＰＩソフト（基盤ソフト）を介して操作するので，これによって，ＸＭＬのアプリケーションプログラムを作成するＳＥ（システムエンジニア）のプログラミングが難しくなる。
【００２８】
一方、従来の連想配列方法では、配列なので、参照、更新がやり易いという利点がある。しかし、連想配列の添字を、固定的に使っているので，要素名の変更ができない。又、指定した部分（レコード）の要素の順番がないため、出力する際に、ユーザが順番を指定する必要がある。更に、書き戻すときには、連想配列に格納したレコード内の要素間に順番がないため、ユーザが順番を指定しないと、書き戻すことができない。
【００２９】
本発明の目的は、要素名と要素内容で表す構造化文書のアプリケーションソフトの開発を容易とするための構造化文書の展開方法及び処理方法を提供することにある。
【００３０】
又、本発明の他の目的は、要素名と要素内容で表す構造化文書のアプリケーションプログラミングインターフェイスとして、利用できる構造化文書の展開方法及び処理方法を提供することにある。
【００３１】
更に、本発明の他の目的は、要素名と要素内容で表す構造化文書のレコード内の階層、要素名の変更、レコードの挿入、削除を容易に実行するための構造化文書の展開方法及び処理方法を提供することにある。
【課題を解決するための手段】
【００３２】
本発明の構造化文書の処理方法は、レコードから構成される構造化文書を、要素に分解し，メモリに展開する構造化文書の展開方法において、前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップとを有する。
【００３３】
又、本発明の構造化文書の処理方法は、レコードから構成される構造化文書を、要素に分解し，メモリに展開し、展開したレコードを処理する構造化文書の処理方法において、前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップと、前記パスを含む要素名/属性名で指定されたレコードの前記要素内容／属性値を、前記連続番号を使用して、処理するステップと、前記連続番号で前記要素内容／属性値を読み出し、前記構造化文書に書き出すステップとを有する。
【００３４】
更に、本発明では、好ましくは、前記連続番号を割り付け、格納するステップは、前記レコード要素の上位階層を、１次元目の添字として、第１の連続番号割り付け、格納するステップと、前記レコード要素内の階層を、２次元目の要素として、第２の連続番号を割り付け、格納するステップからなる。
【００３５】
更に、本発明では、好ましくは、前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有する。
【００３６】
更に、本発明では、好ましくは、前記構造化文書が、ＸＭＬ文書からなる。
【００３７】
更に、本発明では、好ましくは、前記ＸＭＬ文書を読み込んで、要素開始タグ，要素内容，要素終了タグのイベント型の出力に変換し、前記変換したイベントを前記要素として、入力するステップを更に有する。
【００３８】
更に、本発明では、好ましくは、前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記前記開始タグのレコード要素に続く、前記レコード要素の要素名を第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなる。
【００３９】
更に、本発明では、好ましくは、前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有する。
【００４０】
更に、本発明では、好ましくは、前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の上位階層の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記第１の連続番号のリンク先に、２次元配列を設定するステップと、前記レコード要素内の開始タグを検出するステップと、前記レコード要素内の開始タグの検出により、前記レコード要素の要素名を、第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記設定した２次元配列内の前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなる。
【００４１】
更に、本発明では、好ましくは、指定レコード要素で、前記第１の連続番号で割り付けられたレコード要素を走査し、指定レコード要素の前記第１の連続番号を探すステップと、前記第１の連続番号の２次元配列に対応する前記第２の連続番号で割り付けられたレコード要素内の要素内容を走査し、前記２次元配列内の要素内容を引き出すステップを更に有する。
【００４２】
更に、本発明では、好ましくは、前記処理ステップは、前記連続番号により、異なる前記要素内容／属性値を持つ連想配列に、移し変えるステップからなる。
【００４３】
更に、本発明では、好ましくは、前記処理ステップは、前記構造化文書である異なるタグ名のセットを持つ連想配列に移し変えて対応付け，同一のＸＭＬ文書を異なるボキャブラリで操作するステップからなる。
【発明の効果】
【００４４】
従来，ＸＭＬ等の構造化文書のＡＰＩは，どんな複雑なＸＭＬ文書も扱える汎用のものであるため，その分，操作が複雑になった。本発明では、これを解決するため，レコード形式のＸＭＬ文書に特化し，対象ＸＭＬ文書について，レコード要素を指定して，メモリ展開した要素を、２段構えの連想配列に格納し，直感的な配列操作のみで，ＸＭＬ文書全体に渡る各種データ操作が，容易に行うことができる。即ち、２段構えの連想配列を採り，双方の連想配列を連番でリンクし，前段の連想配列から要素名でもって，後段の連想配列をアクセスできるようにするととともに，後段を２次元連想配列にして，階層を表すようにした。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施の形態を、構造化文書展開方法、構造化文書展開処理、構造化文書展開処理をＡＰＩとした構造化文書処理、他の実施の形態の順で説明する。
【００４６】
・・構造化文書展開方法・・
図１は、本発明の一実施の形態の構造化文書展開方法の説明図、図２は、図１のタグの連想配列と内容の連想配列とのプログラムでの指定方法の説明図、図３は、本発明の構造化文書展開方法のＡＰＩへの実装図である。
【００４７】
図１に示すように、本発明は、連想配列を２段に構成したことを基本とする。即ち、１段目のタグの連想配列Ｔａｇ１、Ｔａｇ２に、ＸＭＬ文書のパスを含む要素名からのリンク、２段目の要素内容、属性値の連想配列に、リンク先として要素内容、属性値を格納する。１段目の連想配列のリンク（Ｔａｇ１，Ｔａｇ２）は、連番とする。ＸＭＬ文書を図１の形式に展開するため、ＸＭＬ文書をＳＡＸ（Ｓｉｍｐｌｅ  ＡＰＩ  ｆｏｒ  ＸＭＬ）で分解し、ＳＡＸで出力される要素名，要素内容のストリームに、このリンクを付す。
【００４８】
タグの連想配列Ｔａｇ１，Ｔａｇ２は，要素名を添字にして格納位置を与える１次元連想配列であり、Ｔａｇ１，Ｔａｇ２の格納内容は、連番のリンクとし，Ｔａｇ１とＴａｇ２とで、階層（パス）と要素名を示し、２段目の要素内容、属性値の連想配列Ａｒｒａｙの格納内容（要素内容）をアクセスする。即ち、パスを含む要素名と，要素内容の連想配列の間に、連番を付けたリンクを張る。階層となるレコードの内外は，タグの連想配列のＴａｇ１の添字で表現し，２段目の連想配列とリンクさせ、区別する。このリンクＴａｇ２は、次の役割を果たす。
（１）要素（要素名、要素内容）に、順序を付ける。
（２）Ｔａｇ１，Ｔａｇ２の番号を変更することで，レコードの挿入を容易にする。
【００４９】
（３）別ボキャブラリを、要素名の連想配列で、 １つの要素名で、複数の要素内容のリンクを張ることができる。尚、通常，ＤＯＭ処理ならば，別名で扱う場合は，データ全体をＸＳＬＴで変換してから扱うことになり、この変換が不要となる。
【００５０】
図１は、図１０のＸＭＬ文書の「カタログ」のレコードを展開したものである。図１では、図１０の第１の階層の要素名「モデル名」、「部品」に対し、１次元の添字にするタグの連想配列Ｔａｇ１を割り付ける。ここで、部品（１）に対し、２つの添字「２０」、「３０」を割り付けているのは、属性の連想配列Ａｒｒａｙ（ここでは、＠タイプ“ＣＰＵ”）と、要素内容の連想配列Ａｒｒａｙ［“３０”］を区別するためである。
【００５１】
又、図１０の第２の階層の要素名「名称」、「型番」等に対し、２次元の添字にするタグの連想配列Ｔａｇ２を割り付ける。例えば、要素名「名称」には、Ｔａｇ２＝１が割り付けられ、このＴａｇ２が、要素内容の連想配列Ａｒｒａｙ［３０］の１番目の要素内容（ＣＰＵキット）を指定し、以下、同様である。
【００５２】
一方、アプリケーションプログラムは、図２に示すように、２次元連想配列Ａｒｒａｙ [Ｔａｇ１["レコード要素名"] ][Ｔａｇ２ ["パスを含む要素名/属性名"] ] で指定する。Ｔａｇ１，Ｔａｇ２は、Ａｒｒａｙの添字にする１次元のタグの連想配列であり、要素名を格納した１次元配列Ｔａｇ１で、要素内容を格納した連想配列をアクセスし、これらは、実際の格納位置を与える。
【００５３】
図１に示すように、指定したレコード要素の外を表すタグＴａｇ１の連想配列は、「１０」ごとの連番を与えるように記している。ここでは、１０，２０，３０，４０…である。
【００５４】
これは，１０ごとの連番を取ることによって，間に１０個のレコード要素の挿入を可能にするためである。削除の際には，対象とするレコード要素がなくなるだけなので，連番の大小の順序は変わらない。連想配列は、添字である文字列に対して，それに対応する格納場所を対応付けているだけなので，連番としても割付けていない間の番号の分のメモリ領域を取ることはない。
【００５５】
また、図１０のＸＭＬ文書の例で示した部品カタログは、正確には、表形式では、個々の「部品」のレコード内の要素が異なったものとなっている。この形式の表に、図１のように、レコード内の要素（要素名）に、連番を付けていても，連想配列では、添字と格納内容の１対１の対応関係の領域のみを、メモリに取るだけである。このため、表形式のように、レコード内に出て来ない要素の領域を取ることはなく、各レコードは、正味のメモリ領域を消費するだけになる。
【００５６】
更に、後述するように、Ｔａｇ１，Ｔａｇ２のタグの連想配列を、別な要素名の配列と取り替えれば，要素名が変更できる。
【００５７】
図３は、本発明の連想配列法をＡＰＩプロセッサに実装した一実施の形態の説明図である。本発明の連想配列法を適用したＡＰＩプロセッサ（ＡＰＩソフト）１０は、ＸＭＬプロセッサであるＳＡＸ３０と、本発明の連想配列法を使用したアプリケーション２０とで構成される。
【００５８】
図３において、入力したＸＭＬ文書は、ＳＡＸ３０によって、シリアルのイベント（開始タグ，要素内容，終了タグ，属性名，属性値等）に分解されて、アプリケーション２０に渡される。アプリケーション２０では、図１、図２で説明したように、渡されたイベント列を，タグの連想配列と、内容の連想配列とに格納する。
【００５９】
例えば、図３の例では、“ｔｉｔｌｅ”，“ｐ”が、要素名であり、添字のタグの連想配列Ｔａｇが、図１、図２のＴａｇ２であり、“健康診断のお知らせ”、“明日の社内検診・・・”が、要素内容であり、図１、図２のデータを格納する連想配列Ａｒｒａｙである。そして、Ｔａｇ２は、タグカウンタＴａｇ−ｃｏｕｎｔをカウントアップして、アドレスする連想配列の内容に作成される。又、ここでは、レコードが、”ｍｅｍｏ“１つのため、Ｔａｇ１を表示していない。
【００６０】
・・構造化文書展開処理・・
図４は、本発明の一実施の形態のＸＭＬ文書の読み取り、連想配列への格納処理フロー図である。ここで，タグを格納するタグの連想配列に、"Ｔａｇ１"、"Ｔａｇ２"を、要素内容／属性値を格納する連想配列に"Ａｒｒａｙ"を使うものとする。図１、図１０を参照して、図４の処理を説明する。
【００６１】
（Ｓ１０）まず，ＸＭＬ文書のルート要素「カタログ」、レコード要素として扱う要素名「部品」を入力する。
【００６２】
（Ｓ１１）次に、入力されたＸＭＬ文書レコード（図１０のカタログのレコード）の読取を行う。
【００６３】
（Ｓ１２）このＸＭＬ文書レコードの要素を読み取り、解読する。
【００６４】
（Ｓ１３）要素の読み取りで、読み取った要素が、ルート要素の終了タグ（図１０では、＜／カタログ＞）かを判定する。終了タグと判定すると、終了する。
【００６５】
（Ｓ１４）ルート要素が、ルート要素の終了タグでなければ、ルート要素に属性があるかを判定する。属性がなければ、ステップＳ１６に進む。
【００６６】
（Ｓ１５）要素に属性がある場合には、図１に示すように、「要素名／＠属性名」を、タグの連想配列Ｔａｇ１に格納し、「１０」毎の連番を付け、Ａｒｒａｙ配列の１次元添字として、リンクを張る。更に、Ａｒｒａｙのリンク先に属性値を格納する。
【００６７】
（Ｓ１６）次に、読み取った要素が、レコード要素の開始タグかを判定する。開始タグと判定すると、指定されたレコードのため、ステップＳ１８に進む。
【００６８】
（Ｓ１７）レコード要素の開始タグでないと判定すると、指定レコード外のため、指定レコード外の要素名／要素内容を読み取り、要素名をタグ名の連想配列Ｔａｇ１に格納し、「１０」毎の連番を付け、Ａｒｒａｙ配列の１次元添字として、リンクを張る。更に、Ａｒｒａｙのリンク先に要素内容（図１では、ＭＳ３６０，ＣＰＵ等）を格納する。そして、ステップＳ１３に戻る。
【００６９】
（Ｓ１８）一方、レコード要素の開始タグと判定すると、指定レコードであるから、要素名をタグ名の連想配列Ｔａｇ１に格納し、「１０」毎の連番を付け、Ａｒｒａｙ配列の１次元添字として、リンクを張る。例えば、図１では、部品を読み取り、“部品（１）”、“部品（２）”…として、格納する。更に、Ａｒｒａｙのリンク先に、２次元配列を用意する。
【００７０】
（Ｓ１９）そして、要素を読み取り、属性があるかを判定する。属性がなければ、ステップＳ２１に進む。
【００７１】
（Ｓ２０）属性がある場合には、「要素名／＠属性名」を、タグの連想配列Ｔａｇ２に格納し、１毎の連番を付け、Ａｒｒａｙ配列の２次元添字として、リンクを張る。更に、Ａｒｒａｙのリンク先に属性値（図１では、ＭＳ３６０，ＣＰＵ）を格納する。
【００７２】
（Ｓ２１）レコード要素の終了タグかを判定する。レコード要素の終了タグである場合には、ステップＳ１３に戻る。
【００７３】
（Ｓ２２）一方、レコード要素の終了タグでない場合には、要素名／要素内容を読み取り、要素名をタグ名の連想配列Ｔａｇ２に格納し、１毎の連番を付け、Ａｒｒａｙ配列の２次元添字として、リンクを張る。又、このとき、既に現れている要素名は、前の連番を使用する。更に、Ａｒｒａｙのリンク先に要素内容（図１では、ＭＳ３６０，ＣＰＵ）を格納する。そして、ステップＳ１９に戻る。
【００７４】
このように、レコード要素の開始タグである場合には，レコード要素名に、添字“（ｉ）”を付けて，タグ名の連想配列Ｔａｇ１の添字として，１０ごとの連番を、配列に格納する。次に現れるものは、レコードの中と見なし，要素名をタグ名の連想配列Ｔａｇ２の添字として，１毎の連番を配列に格納する。次に、要素を読み取り，レコード要素の終了タグが出てくるまで，読取った要素名／属性名を添字にして，連番を付して、タグ配列Ｔａｇ２に格納する。
【００７５】
もし，既にその要素名／属性名が現れていれば，先に割当てた連番を使う。そして、内容の連想配列Ａｒｒａｙに，レコードの連番を１次元の添字にし，その連番を２次元の添字にして，出現した要素内容／属性値を格納する。レコード要素の終了タグが出た場合は，次に戻ってルート要素の終了タグが出ているかを調べる。ルート要素の終了タグが出た場合は終了する。
【００７６】
このように、２次元の連想配列Ａｒｒａｙは、ＸＭＬ文書の要素名／属性名を用いて，配列への読み書きとして，配列の内容をアクセスすることができる。この連想配列は、ＸＭＬ文書の全要素・属性を格納するようになっており，更新処理をした後，結果をＸＭＬ文書に書き出すことができる。
【００７７】
次に、ＸＭＬ文書の出力処理（書き込み処理）を説明する。図５は、本発明の一実施の形態のＸＭＬ文書の出力処理フロー図である。ここでも，タグを格納するタグの連想配列に、"Ｔａｇ１"、"Ｔａｇ２"を、要素内容／属性値を格納する連想配列に"Ａｒｒａｙ"を使うものとする。図１、図１０を参照して、図５の処理を説明する。
【００７８】
（Ｓ３０）まず，ＸＭＬ文書のルート要素「カタログ」、レコード要素として扱う要素名「部品」を入力（指定）する。
【００７９】
（Ｓ３１）入力されたルート要素を出力する。
【００８０】
（Ｓ３２）図１の格納内容の１次元配列Ｔａｇ１を、順次走査する。１次元配列Ｔａｇ１の配列要素を全て走査したかを判定する。全て走査した場合には、終了する。
【００８１】
（Ｓ３３）全て走査していない場合には、その走査された要素が、ステップＳ３０で指定した指定レコード要素名かを判定する。指定レコード要素名であれば、ステップＳ３５に進む。
【００８２】
（Ｓ３４）一方、指定レコード要素名でない場合には、タグの配列Ｔａｇ１の配列要素を引き、これで、Ａｒｒａｙ配列を読み出す。そして、Ｔａｇ１の要素名／属性値と要素内容／属性値を、ＸＭＬ文書に書き出す。そして、ステップＳ３２に戻り、次のＴａｇ１を走査する。
【００８３】
（Ｓ３５）指定レコード要素名である場合には、図１の格納内容の１次元配列Ｔａｇ２を、順次走査する。１次元配列Ｔａｇ２の配列要素を全て走査したかを判定する。全て走査した場合には、ステップＳ３２に戻る。
【００８４】
（Ｓ３６）全て走査していない場合には、その走査されたタグの配列Ｔａｇ２の配列要素を引き、これで、Ａｒｒａｙ配列を読み出す。
【００８５】
（Ｓ３７）引き出した内容が、登録されていない（Ａｒｒａｙ配列に存在しない）か否かを判定する。未登録の場合には、そのＴａｇ２の要素／属性を読み飛ばし、ステップＳ３５に戻る。例えば、図１のＴａｇ２の「７」の「容量」の内容である「２００ＧＢ」が、Ａｒｒａｙ［“５０”］内に登録されていない場合である。
【００８６】
（Ｓ３８）一方、引き出した内容が登録されている場合には、Ｔａｇ２の要素名／属性値と要素内容／属性値を、ＸＭＬ文書に書き出す。即ち、ＸＭＬ文書を可変長化されたテキストとして書き出す。尚、メモリ上には、アクセスし易いように、固定長の形式で格納する。そして、ステップＳ３５に戻り、次のＴａｇ２を走査する。
【００８７】
このように、本発明の連想配列は、ＸＭＬ文書の全要素・属性を格納するため、更新処理をした後，結果をＸＭＬ文書に書き出すことができる。
＊＊構造化文書展開処理をＡＰＩとした構造化文書処理＊＊
図６は、本発明の一実施の形態の構造化文書展開処理をＡＰＩとした構造化文書処理フロー図である。
【００８８】
（Ｓ４０）先ず、処理したいレコード要素（図１の例では、「部品」）を指定する。
【００８９】
（Ｓ４２）図２に示すように、処理したいタグ（添字）の１次元連想配列Ｔａｇ１の名前と、要素内容／属性値（内容）の２次元の連想配列の名前（Ｔａｇ１，Ｔａｇ２，Ａｒｒａｙ）を指定する。
【００９０】
（Ｓ４４）ＸＭＬ文書を読み取る。
【００９１】
（Ｓ４６）図５に示す処理を実行し、図１に示すように、指定した連想配列に格納する。即ち、指定したレコード以外の要素内容／属性値を、１次元連想配列に格納し、指定レコードの要素内容／属性値を２次元連想配列（２段目）Ａｒｒａｙに格納する。指定したレコードの要素名／属性名を添字の１次元連想配列Ｔａｇ２に格納する。
【００９２】
（Ｓ４８）要素名を使って、タグの連想配列Ｔａｇ２を添字として、要素内容の２次元配列Ａｒｒａｙを書き替える。
【００９３】
（Ｓ５０）要素名の添字連想配列を数え上げて、２次元連想配列Ａｒｒａｙを読み出し、ＸＭＬ文書に書き出す。そして、終了する。
【００９４】
このように連想配列の要素名／属性名を用いて，配列への読み書きのための，配列の内容をアクセスすることができる。この連想配列は、ＸＭＬ文書の全要素・属性を格納するようになっており，更新処理をした後，結果をＸＭＬ文書に書き出すことができる。
【００９５】
図７及び図８は、本発明の他の実施の形態の構造化文書展開処理をＡＰＩとした構造化文書処理の説明図である。図７は、ある部署(仮にＡ部署)と，別部署(仮にＢ部署)で，異なるタグ・セットを用いている場合のＸＭＬ文書のデータ処理への応用を示す。
【００９６】
先ず、Ａ部署とＢ部署のボキャブラリ対応表５０を、Ｂ部署で用意する。ここでは、日本語と英語のタグセットの対応表である。この対応表を用いて、タグの対応付けを行う。図８に示すように、Ａ部署のＸＭＬ文書１００は、図５の連想配列処理により、図１と同様に、タグの連想配列Ｔａｇ１，Ｔａｇ２と、要素内容・属性値の連想配列Ａｒｒａｙに展開される。
【００９７】
図７の対応表で、図８のように、別な添字の連想配列（英数字の要素名）Ｔａｇ１−１，Ｔａｇ−２−１を用いることによって，別名でデータ処理を行うことができる。即ち、ＸＭＬ文書１００を読み取り、連想配列１０により、メモリに展開した後，図７のタグの対応付けのように、Ａ部署とＢ部署のタグを対応付ける。図８で示すと、Ａ部署のタグ配列Ｔａｇ２の内容を，Ｂ部署のタグ配列Ｔａｇ２−１に移し変える。これによって，データ更新加工ソフト１１２は、Ｂ部署のタグを用いて，Ａ部署の要素内容がアクセスできるようになる。
【００９８】
このように、従来，ＸＭＬ文書は，タグが異なるだけでも、Ａ部署用，Ｂ部署用に、２重に作らなければならず，データ処理ソフトも部署ごとに別々のものを用いていた。これらの不都合を回避するためには、ＸＭＬ文書のタグ・セットを、予めトップダウンで設定した後，双方で共通のタグ・セット、データ処理ソフトを用いることが必要になっていた。しかし，このやり方では，トップダウンで、共通のタグ・セットが決まるまで，ＸＭＬ化が進められないことになる。また，この例では，タグ・セットが、日本語と英語であり，Ａ部署が日本，Ｂ部署が海外であれば，共通化せず，２系統あった方が，各々の部署にとっては使い易い。
【００９９】
本発明によれば，従来のように、トップダウンで、共通タグ・セットを決めてなくても，大体の項目さえ合っていれば、ボトムアップで、ＸＭＬ化を始め，タグ・セット間の差異を、タグ・セットの対応付けだけで吸収できる。また，この例のように、日本語と英語のタグ・セットの場合，並存して使うことができる。
【０１００】
このように、従来は、ＸＭＬ文書が、部分的に連想配列に格納されるのに対して，本発明では，ＸＭＬ文書全体が、２次元連想配列に格納され，ＡＰＩとして使えるため，直感的な配列操作のみで，ＸＭＬ文書全体に渡る各種データ操作が容易に行えるようになる。
【０１０１】
又、レコード要素名を与えて，レコード要素を反映した２次元配列構造を取るため，レコードの中と外が区別でき，レコード単位には、オブジェクトとして、扱うことが可能になる。更に，本発明のＡＰＩ形式により，前段の連想配列を取り替えるだけで，要素内容を別の要素名でアクセスすることが簡単に行える。レコード内の階層，要素名の変更や，レコードの挿入・削除等の操作も行える。
＊＊他の実施の形態＊＊
前述の実施の形態では、構造化文書を、ＸＭＬ文書で説明したが、他の構造化文書にも適用できる。又、ＸＭＬ文書を、図１０の例で、図１、図２のように、展開したもので説明したが、他の内容のＸＭＬ文書にも適用できる。更に、図３のＳＡＸの代わりに、ＤＯＭを使用することもできる。
【０１０２】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【０１０３】
（付記１）レコードから構成される構造化文書を、要素に分解し，メモリに展開する構造化文書の展開方法において、前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップとを有することを特徴とする構造化文書の展開方法。
【０１０４】
（付記２）前記連続番号を割り付け、格納するステップは、前記レコード要素の上位階層を、１次元目の添字として、第１の連続番号割り付け、格納するステップと、前記レコード要素内の階層を、２次元目の要素として、第２の連続番号を割り付け、格納するステップからなることを特徴とする付記１の構造化文書の展開方法。
【０１０５】
（付記３）前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有することを特徴とする付記２の構造化文書の展開方法。
【０１０６】
（付記４）前記構造化文書が、ＸＭＬ文書からなることを特徴とする付記１の構造化文書の展開方法。
【０１０７】
（付記５）前記ＸＭＬ文書を読み込んで、要素開始タグ，要素内容，要素終了タグのイベント型の出力に変換し、前記変換したイベントを前記要素として、入力するステップを更に有することを特徴とする付記４の構造化文書の展開方法。
【０１０８】
（付記６）前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記前記開始タグのレコード要素に続く、前記レコード要素の要素名を第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなることを特徴とする付記４の構造化文書の展開方法。
【０１０９】
（付記７）前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有することを特徴とする付記６の構造化文書の展開方法。
【０１１０】
（付記８）前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の上位階層の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記第１の連続番号のリンク先に、２次元配列を設定するステップと、前記レコード要素内の開始タグを検出するステップと、前記レコード要素内の開始タグの検出により、前記レコード要素の要素名を、第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記設定した２次元配列内の前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなることを特徴とする付記４の構造化文書の展開方法。
【０１１１】
（付記９）指定レコード要素で、前記第１の連続番号で割り付けられたレコード要素を走査し、指定レコード要素の前記第１の連続番号を探すステップと、前記第１の連続番号の２次元配列に対応する前記第２の連続番号で割り付けられたレコード要素内の要素内容を走査し、前記２次元配列内の要素内容を引き出すステップを更に有することを特徴とする付記２の構造化文書の展開方法。
【０１１２】
（付記１０）レコードから構成される構造化文書を、要素に分解し，メモリに展開し、展開したレコードを処理する構造化文書の処理方法において、前記要素を、１段目の連想配列に、パスを含む要素名/属性名を添字とし，その内容に出現順序に関係付けた連続番号を割り付け、格納するステップと，２段目の連想配列に、前記連続番号を添字とし，その内容に対応する要素内容/属性値を格納するステップと、前記パスを含む要素名/属性名で指定されたレコードの前記要素内容／属性値を、前記連続番号を使用して、処理するステップと、前記連続番号で前記要素内容／属性値を読み出し、前記構造化文書に書き出すステップとを有することを特徴とする構造化文書の処理方法。
【０１１３】
（付記１１）前記連続番号を割り付け、格納するステップは、前記レコード要素の上位階層を、１次元目の添字として、第１の連続番号割り付け、格納するステップと、前記レコード要素内の階層を、２次元目の要素として、第２の連続番号を割り付け、格納するステップからなることを特徴とする付記１０の構造化文書の処理方法。
【０１１４】
（付記１２）前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有することを特徴とする付記１１の構造化文書の処理方法。
【０１１５】
（付記１３）前記構造化文書が、ＸＭＬ文書からなることを特徴とする付記１０の構造化文書の処理方法。
【０１１６】
（付記１４）前記ＸＭＬ文書を読み込んで、要素開始タグ，要素内容，要素終了タグのイベント型の出力に変換し、前記変換したイベントを前記要素として、入力するステップを更に有することを特徴とする付記１３の構造化文書の処理方法。
【０１１７】
（付記１５）前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記前記開始タグのレコード要素に続く、前記レコード要素の要素名を第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなることを特徴とする付記１３の構造化文書の処理方法。
【０１１８】
（付記１６）前記第１の連続番号を割り付け、格納するステップは、指定されたレコードの外の階層を表すときに，前記第１の連続番号を、間隔を空けて割り付けるステップを有することを特徴とする付記１５の構造化文書の処理方法。
【０１１９】
（付記１７）前記連続番号を割り付け、格納するステップは、前記ＸＭＬ文書のレコード要素の上位階層の開始タグを検出するステップと、前記開始タグの検出により、前記レコード要素の要素名を、第１の連続番号を割り付け、格納するステップと、前記第１の連続番号のリンク先に、２次元配列を設定するステップと、前記レコード要素内の開始タグを検出するステップと、前記レコード要素内の開始タグの検出により、前記レコード要素の要素名を、第２の連続番号を割り付け、格納するステップとを有し、前記要素内容/属性値を格納するステップは、前記設定した２次元配列内の前記第２の連続番号に対応した位置に、前記レコード要素の要素内容を格納するステップとからなることを特徴とする付記１３の構造化文書の処理方法。
【０１２０】
（付記１８）指定レコード要素で、前記第１の連続番号で割り付けられたレコード要素を走査し、指定レコード要素の前記第１の連続番号を探すステップと、前記第１の連続番号の２次元配列に対応する前記第２の連続番号で割り付けられたレコード要素内の要素内容を走査し、前記２次元配列内の要素内容を引き出すステップを更に有することを特徴とする付記１１の構造化文書の処理方法。
【０１２１】
（付記１９）前記処理ステップは、前記連続番号により、異なる前記要素内容／属性値を持つ連想配列に、移し変えるステップからなることを特徴とする付記１１の構造化文書の処理方法。
【０１２２】
（付記２０）前記処理ステップは、前記構造化文書である異なるタグ名のセットを持つ連想配列に移し変えて対応付け，同一のＸＭＬ文書を異なるボキャブラリで操作するステップからなることを特徴とする付記１９の構造化文書の処理方法。
【産業上の利用可能性】
【０１２３】
構造化文書全体が２次元連想配列に格納され，ＡＰＩとして使えるため，直感的な配列操作のみで，構造化文書全体に渡る各種データ操作が容易に行えるようになる。２段構えの連想配列を採り，双方の連想配列を連番でリンクし，前段の連想配列から要素名でもって，後段の連想配列をアクセスできるようにするととともに，後段を２次元連想配列にして、階層を表すようにしたので、構造化文書のアプリケーション開発に寄与する。
【図面の簡単な説明】
【０１２４】
【図１】本発明の一実施の形態の連想配列による構造化文書の展開処理の説明図である。
【図２】図１のプログラム上での指定法の説明図である。
【図３】本発明の一実施の形態のＡＰＩの説明図である。
【図４】本発明の一実施の形態のメモリ格納処理フロー図である。
【図５】本発明の一実施の形態の書き出し処理フロー図である。
【図６】本発明の一実施の形態の構造化文書の処理フロー図である。
【図７】本発明の他の実施の形態の構造化文書の処理の説明図である。
【図８】図７の連想配列の移し変えの説明図である。
【図９】従来の構造化文書の処理システムの説明図である。
【図１０】図９の構造化文書の説明図である。
【図１１】従来の構造化文書のＡＰＩの説明図である。
【図１２】図１１の処理フロー図である。
【図１３】従来の構造化文書の連想配列処理の説明図である。
【図１４】従来の構造化文書の連想配列のアクセス処理の説明図である。
【図１５】従来の構造化文書の連想配列処理フロー図である。
【符号の説明】
【０１２５】
１０  ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）
２０  ２次元連想配列アプリケーション
３０  ＳＡＸ
１００，１０２  構造化文書（ＸＭＬ文書）
１１０  基盤ソフト（ＡＰＩソフト）
１１２  アプリケーションソフト
Ｔａｇ１  １次元の添字にする連想配列
Ｔａｇ２  ２次元の添字にする連想配列
Ａｒｒａｙ  内容の連想配列
【図１】
2007058623.tif 000003
【図２】
2007058623.tif 000004
【図３】
2007058623.tif 000005
【図４】
2007058623.tif 000006
【図５】
2007058623.tif 000007
【図６】
2007058623.tif 000008
【図７】
2007058623.tif 000009
【図８】
2007058623.tif 000010
【図９】
2007058623.tif 000011
【図１０】
2007058623.tif 000012
【図１１】
2007058623.tif 000013
【図１２】
2007058623.tif 000014
【図１３】
2007058623.tif 000015
【図１４】
2007058623.tif 000016
【図１５】
2007058623.tif 000017