(57)【要約】【課題】  構造化文書を、構造の情報を保持したまま分解し、選択したデータだけで構造化文書を再構築することを目的とする。【解決手段】  任意の構造を持った構造化文書を入力として受け付け、入力された構造化文書を、先頭のタグから順に読み込んでいき、再び構造を再現できる形で、構造の情報を自動的にメモリ上にリスト展開できるように解析し、要素や属性の指定によって任意のデータを選択することで、選択したデータだけで、再び構造を構築し直して出力することを行う。【選択図】  図１
2008097436.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を入力する入力部と
構造化文書の全体の構造と内部データを解析して分解しまとめる手段と
構造化文書の特定の部分を指定するデータを解析する手段と
構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段と
構造化文書を構築する手段と
構造化文書を出力する出力部と
を有する構造化文書構造自動解析および構造自動再構築装置であって、
前記入力部と出力部はそれぞれ通信部を備え
前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段は、入力された構造化文書をデータの先頭から順に読み込み、構造を再現するために必要な情報を判別し、内部データにその情報を付加した形で保持し、
構造化文書の特定の部分を指定するデータを解析する手段は、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段でまとめたデータにアクセスできる形で、特定の部分を指定するデータをまとめて保持し、
構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段は、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段でまとめられたデータから、前記構造化文書の特定の部分を指定するデータを解析する手段で解析して得られたデータで、選択された特定の部分を、その部分に付加された構造を再現するための情報と共に抽出し、
前記構造化文書を構築する手段は、前記構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段で抽出されたデータから、構造を再現するための情報を示すデータを判別し、その判別したデータを利用して、再び入力された構造化文書の構造を崩さずに、選択されたデータだけで組み立てなおして構造化文書の形を作り出力する。
構造化文書の解析、分解、構造化文書の特定の部分を指定するデータの解析、構造化文書の構築といった技術を組み合わせることによって、人手を介さず、任意の構造をした構造化文書を入力データとして処理し、指定された任意のデータだけで、構造を崩さずに構造化文書を構築しなおし出力することを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項２】
請求項１において、前記構造化文書を入力する入力部が受け取る構造化文書は、XMLデータであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項３】
請求項１乃至２において、前記入力部内の通信部は、インターネットを含んだネットワークであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項４】
請求項１乃至３において、構造化文書の全体の構造と内部データを解析して分解しまとめる手段は、構造化文書を読み込み、タグ構造を解釈し、タグとタグの親子関係、兄弟関係、およびタグとタグに囲まれた中身の情報およびタグ内に記述された情報を判断し、その情報を１つのタグに対して付加して、１つのタグごとにまとめて保持することを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項５】
請求項１乃至４において、前記構造化文書の特定の部分を指定するデータを解析する手段における特定の部分を指定するデータはロケーションパスであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項６】
請求項１乃至５において、前記構造化文書を構築する手段は、前記特定の部分を指定するデータによって選択されたデータだけで構築するだけでなく、全てのデータと指定することで、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段で、１度分解した入力された構造化文書を、再び同一の構造化文書として構築し直すことができることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【請求項７】
請求項１乃至６において、前記出力部内の通信部は、インターネットを含んだネットワークであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
【発明の詳細な説明】
【技術分野】
【０００１】
構造化文書の取り扱いに関する。
【背景技術】
【０００２】
従来、入力される構造化文書から、必要な情報を選択し、その選択した情報だけを、構造を保ったまま抜き出して出力する場合、人間があらかじめ入力される構造化文書の構造を把握した上で、XSLTの作成や構造化文書から情報を抽出するプログラミングを行っていた。
【０００３】
従来例としては、例えば特許文献１と特許文献２をあげることが出来る。
【特許文献１】特開平10-240752号公報
【特許文献２】特開平11-242676号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、入力される構造化文書の構造があらかじめ分からなければ、入力される構造を意識したXSLTの作成や、プログラミングができず、入力される構造化文書から、必要な情報を選択し、その選択した情報だけを、構造を保ったまま抜き出して出力することは困難であった。
【課題を解決するための手段】
【０００５】
上記のような問題を鑑み、入力された構造化文書をＳＡＸによってパースしていき、メモリ上に、パースによって順番に出現する構造化文書の構造における要素ごとにリストを作成し、要素の名前、要素タグの親子関係、兄弟関係、要素タグと要素タグで囲まれる"値"、属性の名前、属性の値を、１つの要素に対して付加情報として対応づけ、リストデータとして構造化文書の構造を分解した情報を保持する。そして、ロケーションパスによって、入力構造化文書の各データを指定することによって、リストデータから関連する情報を抽出し、指定されたデータだけで、元の構造化文書の構造に再構築して出力する装置を提供する。
【発明の効果】
【０００６】
本発明により、入力される構造化文書の構造をあらかじめ把握してなくてもロケーションパスを与えることで、入力される構造化文書から必要な情報を選択でき、その選択した情報だけを、入力された構造化文書の構造を再び構築できる形で抽出し、構築し直して出力することができることで、構造の分からない構造化文書が入力されても、構造化文書のサブセットを自動的に作ることができ、ＸＳＬＴの作成や、個々の構造化文書の構造を意識したプログラミングによる人間の作業の負荷を、減らすことができる。
【０００７】
また、入力装置として小リソースのデータしか扱えないデバイスを想定した場合、入力される構造化文書のデータサイズが大きければ、余分な情報を抜き取った形で、データを入力させて処理することができるため、デバイス側で、入力データを扱いやすくなる。また、同様の動きをＸＳＬＴを作成して行う場合、入力される構造化文書のデータサイズに比例してＸＳＬＴ自体のデータサイズも増える、あるいは、入力される構造化文書の構造が違えば、それぞれの構造に対してXSLTを作成する必要があるため、結果的にXSLT自体の容量や数が増えてしまうが、ロケーションパスの組み合わせだけで処理が行えることで、それら大容量のＸＳＬＴを取り扱わなくてすみ、小リソースのデータしか扱えないデバイス側にとっても小容量のデータの扱いだけですむ。
【０００８】
また、入力データを提供する側にとって、構造化文書の中で、相手に見せたくない、セキュリティー上公開したくない部分などを切り取った形で、全体の構造化文書の構造は崩さずにロケーションパスの指示だけで出力できることが可能となり、構造化文書の構造を手書きでなおしたり、それに対応するＸＳＬＴを作成したりするという人間の負荷が減る。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態を、具体例を用いて詳細に説明する。
【実施例１】
【００１０】
図 1は、本実施例における装置全体の構成図である。図 1を用いて、以下、本実施例における装置全体の処理の流れを説明する。
【００１１】
図 1中１０１は、装置内部の各処理部を示したものであり、入力用として図 1中１０２の構造化文書（inputA.xml）と、出力用として図 1中１０３の構造化文書（outputB.xml）（共にXMLデータであり、以下XMLデータと表現する）と図 1中１０４、１０５のそれぞれの構造化文書の内部データを指し示すロケーションパスの組み合わせ(ロケーションパスA、ロケーションパスB)を、図 1中１０６の入力部で受け取り、処理を開始する。図 1中１０７は、構造自動解析装置であり、その内部の処理の流れを示したのが図 1中１０８である。図 1中１０９は、構造解析＆分解部であり、SAX(The Simple API for XML)エンジンを利用して、入力されたXMLデータをパースしていき、メモリ上に、パースによって順番に出現するXMLデータの構造における要素ごとにリストを作成し、要素の名前、要素タグの親子関係、兄弟関係、要素タグと要素タグで囲まれる"値"、属性の名前、属性の値を１つの要素に対して付加情報として対応づけ、XMLデータ解析リストとしてXMLデータの構造を分解した情報を保持する。図 1中１１０はロケーションパス解析部であり、入力されたロケーションパスをそれぞれ解析し、メモリ上に作成したXMLデータ解析リストの内容を指し示せる形で保持しておく。図 1中１１１はデータ選択＆抽出部であり、XMLデータ解析リストから、保持してあるロケーションパスが指し示すデータのリスト番号と、そのリスト番号と親子関係あるいは兄弟関係など関連するリスト番号をすべて選択し、抽出する。図 1中１１２は構造構築部であり、XMLデータ解析リストと選択されたリスト番号から、一度分解したXMLデータを選択されたデータだけで構築しなおして、XMLデータとして出力することを行う。図 1中１１３は、ロケーションパス対応付け＆データ変換処理部であり、入力部に入力されたロケーションパスAとBのロケーションパスを１対1で対応付け、入力用XMLデータ(inputA.xml)と出力用XMLデータ（outputB.xml）のそれぞれのXMLデータ解析リストの中身のデータをロケーションパスの対応付けによって変換し、変換した出力用XMLデータのXMLデータ解析リストを出力する。図 1中１１４は構造構築部であり、XMLデータ解析リストから再びXMLデータとして構築するという図 1中１１２と同様の処理を行い、図 1中１１５の出力部から、図 1中１１６の構築したXMLデータ（output.xml）を出力することを行う。
【００１２】
次に、前記構成図における各処理部の処理の詳細を示す。図 2は、前記構造自動解析装置内、構造解析＆分解部についての処理内容を記述している。図 2中２０１は、前記入力データの入力用としたXMLデータの具体例である。この１つのXMLデータを利用して以下処理内容を説明していく。図 2中２０２は構造解析＆分解部であり、図 2中２０３に処理のフローを示す。図 2中２０４でXMLデータを入力し、図 2中２０５でSAXエンジンによって、XMLデータを先頭のタグからパースしていく。図 2中２０６で、メモリ上にパースによって順番に出現するXMLデータの構造における要素ごとに番号を振ってリストを作成し、図 2中２０７で、要素の階層番号、要素の名前、namespace名、要素タグと要素タグで囲まれる"値"であるテキスト要素値、要素タグの親を示す親要素番号、要素タグの兄弟を表す1つ前兄弟番号、同じ階層で同じ要素名がある場合に判別できるよう、要素が出現した順番を示す要素出現順番号、要素が持っている属性の数、要素が持っている属性の名前と属性の値を全て、１つの要素に対して付加情報として対応づけ、図 2中２０８ですべての要素に対し分解処理が終わるか判断し、図 2中２０９のXMLデータ解析リストとしてXMLデータの構造を分解した情報を保持する。
【００１３】
図 3は、前記ロケーションパス解析部についての処理内容を示したものである。図 3中３０１は前記入力用XMLデータの中のデータを指し示すロケーションパスの具体例である。このロケーションパスを利用して以下処理内容を説明していく。図 3中３０２でロケーションパスを入力し、図 3中３０３で図 3中３０４の形で、ロケーションパスを分解し、リストとしてメモリ上に保持する。その際にたとえば、student[position()="2"]という表現があれば、これは、同一階層番号上に同じ要素名が存在し、それを区別するために、その中でも2番目の要素という指定がされていることになるが、これは、student#2という形でメモリ上に保持する。同様に、例えば、class/@numberという表現があれば、class@numberという形でメモリ上に保持する。
【００１４】
図 4は前記データ選択＆抽出部の処理内容の詳細を示したものである。図 4中４０１は前記構造解析＆分解部から出力されたXMLデータ解析リストである。図 4中４０２は、前記ロケーションパス解析部から出力されたロケーションパスのリストである。図 4中４０３は前記データ選択＆抽出部の処理をフローチャートで示したものである。図 4中４０４で図 4中４０２のロケーションパスのリストを順に取得する。図 4中４０５で、XMLデータ解析リストから、要素番号順にリスト（図 4中４００）を取得し、取得したリストから要素名と、取得したロケーションパスリストの最下層の要素名address（図 4中４０２では、リストの１番目ならaddress、リストの２番目ならtel、リストの３番目ならname）を比較していき、XMLデータ解析リスト内の要素名がロケーションパスで指定された要素名と同じ要素名であるか検索する。図 4中４０６で要素名が同じでなければ、次の要素番号のリストを取得する処理まで戻る。同じであれば、図 4中４０７で、その要素番号を保存する。図 4中４０８で、その要素番号に対するリスト内から親要素番号を検索する。図 4中４０９において、親要素番号が-1であれば、図 4中４２２でヒットしたリスト番号と、それに関係する保存したリスト番号を出力する。１番最初から-１であれば、ルートの要素名であり、関係する保存したリスト番号は無い。親要素番号が-1でなければ、図 4中４１０で親要素番号が示すリストを取得する。図 4中４１１で取得してあるロケーションパスに、最下層の要素名の親の要素名(リスト１であればaddressの前のsecurity)が指定されているか検索する。図 4中４１２で、指定されているか、されていないか判断し、指定されていなければ、その親要素番号の示すリストは必要なデータであるので、保存する。指定されていれば、親要素番号の示すリストの要素名と、そのロケーションパスで指定されている要素名を順（例security→teacher）に比較していく。図 4中４１４で、ロケーションパスで指定された要素名と、XMLデータ解析リスト内の親要素番号を辿っていき、ひとつでも要素名の不一致があれば、その親要素番号で指定したリストデータは必要が無いと判断し、次の要素番号のリストを取得する処理に戻る。要素名が一致していれば、図 4中４１５でロケーションパスで指定されている要素名に#?(?:数値)が付加されているか確認する。図 4中４１６で#?が付加されているか判断し、付加されていれば、#?の?で指定された番号と、図 4中４１７で要素出現順番号を検索した番号を図 4中４１８で比較する。図 4中４１９で番号が一致しているか判断し、一致していなければ、その親要素番号で指定したリストデータは必要が無いと判断し、次の要素番号のリストを取得する処理に戻る。一致していれば、その親要素番号を保持（図 4中４２０）し、そのリストデータの親要素番号を取得（図 4中４２１）し、親要素番号が-1でないかの判断の処理からまた繰り返す。最終的にロケーションパスで指定されたパスで、XMLデータ解析リスト内でヒットした要素番号とそれに関係する要素番号を保持する。
【００１５】
さらに具体的に書くと、図 4中４０２のロケーションパスで１番目のリストのロケーションパス（teacher/security/address）にヒットする番号は、全部で、５→４→２→１→０の順でヒットし、これらが抽出される番号となる。１つのロケーションパスに対して処理が終われば、2番目のロケーションパス（class/student[position="2"]/security/tel）を取得し、同様の処理を繰り返す。2番目のリストのロケーションパスにヒットする番号は、１６→１４→１２→１→０の順でヒットする。３番目のリストのロケーションパス(name)にヒットする番号は、nameという指定だけなので、３→２→１→０、８→７→１→０、１３→１２→１→０という順番でヒットする。
【００１６】
すべての処理が終わった時点で、抽出した番号で重なるものがあれば、重複した番号は1つだけ残し、その他はすべて削除し、最終的に残った番号を出力する。その結果として、図 4中４２３で示した番号となり、これが、すべてのロケーションパスで指定されたデータに関連する要素番号である。
【００１７】
図 5は、前記構造構築部の処理内容の詳細を示したものである。図 5中５０１は前記構造解析＆分解部から出力されたXMLデータ解析リストである。図 5中５０２は前記データ選択＆抽出部で選択された要素番号のリストである。図 5中５０３は前記構造構築部の処理をフローチャートで示したものであり、以下処理の流れを説明する。図 5中５０４で、XMLデータ解析リスト（図 5中５０１）を取得する。図 5中５０５で、XMLデータ解析リストから抽出する要素番号を保持したリスト（図 5中５０２）を取得する。図 5中５０６でXMLデータ解析リストから図 5中５０２で取得した要素番号のリストデータ（図 5中５００）を順に取得する。図 5中５０７で、抽出したリストデータの階層番号を取得し保持する。図 5中５０８で、前回保持した階層番号と今回保持した階層番号を比較する。図 5中５０９で、初回の処理でない、もしくは、前回保持階層番号＞＝今回取得階層番号  の判断で偽ならば、図 5中５１０で、リストデータから要素名を取得し、「＜要素名＞」  の開始タグの形にして（‘＜’‘＞’記号を付加して）文字列（図 5中５２０）として格納する。図 5中５１１で、リストデータから属性名、属性値があれば順に取得し、開始タグの中に追加する形で、文字列（図 5中５２０）に追加する。図 5中５１２で、リストデータからテキスト要素値があれば取得し、開始タグの後に、文字列（図 5中５２０）として追加する。図 5中５１３で取得した要素名を「＜/要素名＞」  の終了タグの形にして、スタック（図 5中５２１）に格納(push)する。図 5中５０９の判断で真ならば、図 5中５１４でスタック（図 5中５２１）に格納してある終了タグを１回取り出して（pop）文字列（図 5中５２０）に格納する。図 5中５１５で図 5中５０１のXML解析リストから図 5中５０２の要素番号のリストに記述されている要素番号のデータ分、抽出していなければ、図 5中５０６の処理に戻り、抽出していないデータに対して同様の処理を繰り返す。記述された要素番号のデータをすべて抽出し終わったら、図 5中５１６で、図 5中５２１のスタックに終了タグがまだ残っているか確認する。図 5中５１７で、図 5中５１８で残っていれば、スタックから終了タグを取得(pop)し、文字列（図 5中５２０）に追加する。終了タグが残っていなければ、図 5中５１９で、格納した文字列（図 5中５２０）を出力する。図 5中５０１のＸＭＬ解析リストから、図 5中５０２の要素番号のリストに記述されている要素番号のデータだけを抽出して、文字列を組み立て最終的に出力すると図 5中５２２のＸＭＬデータとして出力され、入力されたＸＭＬデータの構造を崩さず、ロケーションパスによって選択されたデータだけを抜き出して、ＸＭＬデータとして出力できる。
【００１８】
図 6は、前記ロケーションパス対応付け＆データ変換処理部の処理内容の詳細を示したものである。これまでは、入力されたＸＭＬデータが１つで、そのデータからロケーションパスで選択したデータだけを抽出してＸＭＬデータとして構造を崩さずに構築しなおして出力するところまで述べたが、前記ロケーションパス対応付け＆データ変換処理部を、前期構造構築部の処理が行われる前に加えることで、前記入力データの入力用としたXMLデータ（以下入力用ＸＭＬデータとする）、前記入力データの出力用としたXMLデータ（以下出力用ＸＭＬデータとする）をそれぞれ読み込み、入力用ＸＭＬデータからロケーションパスで選択したデータを、出力用ＸＭＬデータのロケーションパスで選択した要素に挿入することで、異なる構造をしたＸＭＬデータによるデータの変換が可能となる。以下その流れを説明する。
【００１９】
図 6中６０１は、入力用ＸＭＬデータであり、これまでの説明の中で使用してきたＸＭＬデータと同様の構造とデータ内容である。図 6中６０２は、出力用ＸＭＬデータであり、既にテキスト要素値が一部格納してあり、入力用ＸＭＬデータとは構造が異なっている。図 6中６０３は、入力用ＸＭＬデータに対するロケーションパスであり、図 6中６０４は、出力用ＸＭＬデータに対するロケーションパスである。ロケーションパス対応付け部では、この両者のロケーションパスを図 6中６０５のようにリストの一番目同士、二番目同士という形で、1対1で対応付ける。このロケーションパスの対応付けの情報を使って、データ変換処理部では、メモリ上に保持してある入力用ＸＭＬデータを読み込み解析した結果を示す図 6中６０６のＸＭＬデータ解析リストから、出力用ＸＭＬデータを読み込み解析した結果を示す図 6中６０７のＸＭＬデータ解析リストへ、それぞれ、ロケーションパスで選択されたデータを示す要素番号を検索し、それぞれデータをコピーする（図 6中６０８）ことを行い、その結果を図 6中６０９のＸＭＬデータ解析リストとして出力する。このデータの要素番号をすべてリストのデータとして、図 6中６１１の前記構造構築部に渡す。前記構造構築部は、図 6中６０９のＸＭＬデータ解析リストと図 6中６１０の要素番号のリストを受け取り、図 5を使用して記述した処理を行うことで、図 6中６１２のＸＭＬデータを出力する。具体的に見ると、入力用ＸＭＬデータ内のデータである、Ａさん、東京都、045-3333-3333というテキスト要素値が、出力用ＸＭＬデータのそれぞれ、ロケーションパスで選択されたテキスト要素値へ格納される。
【００２０】
この結果、構造の異なるＸＭＬデータからロケーションパスで指定したデータを、別の構造を持ったＸＭＬデータで、ロケーションパスで指定した場所にデータを挿入できることで、結果的に、ＸＭＬの構造が変換されて出力されることがわかる。よって、あらかじめ入力用ＸＭＬデータと出力用ＸＭＬデータの構造を把握していなくても、ＸＭＬデータの解析から自動的に行うので、動的なデータの交換＝動的なＸＭＬの構造変換、が成り立つ。本実施例では、テキスト要素値の変換しか行っていないが、属性値に対してもロケーションパスの指定で、同様の処理、同様の結果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】本実施例における装置全体の構成図である。
【図２】前記構造解析＆分解部について、データの解析および分解の具体例を示した図である。
【図３】前記ロケーションパス解析部について、ロケーションパスの具体例を示した図である。
【図４】前記データ選択＆データ抽出部の処理の内容を記述した図である。
【図５】前記構造構築部の処理の内容を記述した図である。
【図６】前記ロケーションパス対応付け＆データ変換処理部である。
【符号の説明】
【００２２】
１０１  処理全体構成図
１０２  入力XMLデータ
１０３  ロケーションパスデータ
１０４  入力XMLデータ
１０５  ロケーションパスデータ
１０６  入力部
１０７  構造自動解析装置
１０８  構造自動解析装置構成図
１０９  構造解析＆分解部
１１０  ロケーションパス解析部
１１１  データ選択＆抽出部
１１２  構造構築部
１１３  ロケーションパス対応付け＆データ変換処理部
１１４  構造構築部
１１５  出力部
１１６  出力XMLデータ
２０１  入力XMLデータ
２０２  構造解析＆分解部モジュール
２０３  構造解析＆分解部処理の流れ
２０４  XML入力処理
２０５  パース開始処理
２０６  出現する要素ごとにメモリ上にリストを作成する処理
２０７  要素に関わる必要情報を取得しリストに付加していく処理
２０８  全ての要素に対する必要情報の抽出、分解処理が終わり次第パースを終了する処理
２０９  XMLデータ解析リスト
３０１  ロケーションパス具体例
３０２  ロケーションパス入力処理
３０３  与えられたロケーションパスを１から順に解析して分解しメモリ上にリストとして保存する
３０４  ロケーションパスを分解した結果リスト
４００  XMLデータ解析リスト中要素番号で選択されたリスト
４０１  XMLデータ解析リスト
４０２  ロケーションパスを分解した結果リスト
４０３  処理全体フロー
４０４  ロケーションパスのリストを順に取得する処理
４０５  要素番号順にリストのデータを読んでいき、取得したロケーションパスの最下層の要素名があるか検索する処理
４０６  要素名があるか判断
４０７  ヒットしたリストの番号を保存する処理
４０８  ヒットしたリスト内の親要素番号を検索する処理
４０９  親要素番号が  -1であるかないか判断
４１０  親要素番号が示すリストを取得する処理
４１１  保存してあるロケーションパスに次の要素名が指定されているか検索する処理
４１２  指定しているか判断
４１３  取得したリストの要素名と保存してあるロケーションパスを順に比較する処理
４１４  要素名が一致するか判断
４１５  ロケーションパスの要素名の#?(?:数値)を検索する処理
４１６  #?があるか判断
４１７  取得したリストの要素出現番号を検索する処理
４１８  取得した要素出現番号と#?の?で指定された番号を比較する処理
４１９  番号が一致するか判断
４２０  取得したリストの番号を保存する処理
４２１  取得したリストの親要素番号を検索する処理
４２２  ヒットしたリスト番号とそれに関係する保存したリスト番号を出力する処理
４２３  選択された要素番号リスト
５００  XMLデータ解析リスト中要素番号で選択されたリスト
５０１  XMLデータ解析リスト
５０２  選択された要素番号リスト
５０３  処理全体フロー
５０４  リスト（５０１）取得する処理
５０５  抽出するリスト番号を格納したリスト（５０２）を取得する処理
５０６  ５０１のリストから５０２で指定したリスト番号のデータを順に抽出する処理
５０７  階層番号を取得し保持する処理
５０８  前回保持してあった階層番号と今回保持した階層番号を比較する処理
５０９  初回の処理でなく、前回保持階層番号>=今回取得階層番号  であるかどうか判断
５１０  ５０２で指定した番号リストデータから要素名を取得し、<要素名>開始タグの形で文字列(５２０)として格納する処理
５１１  ５０２で指定した番号のリストデータから属性名、属性値があれば順に取得し、要素名のあとに文字列（５２０）として追加する処理
５１２  ５０２で指定した番号リストのデータからテキスト要素値があれば取得し開始タグの後に文字列（５２０）として追加する処理
５１３  取得した要素名を終了タグの形にしてスタック（５２１）に追加する処理
５１４  スタック（５２１）にためてある終了タグを１回popして文字列(５２０)に追加して格納する処理
５１５  ５０２のリスト番号分抽出してないかどうか判断
５１６  スタックに終了タグがあるか検索する処理
５１７  終了タグがスタックにあるか判断
５１８  取得した終了タグを文字列として格納する処理
５１９  格納した文字列を出力する処理
５２０  最終出力用文字列
５２１  スタックイメージ
５２２  ＸＭＬデータ構築結果
６０１  入力用ＸＭＬデータ
６０２  出力用ＸＭＬデータ
６０３  ロケーションパスデータ
６０４  ロケーションパスデータ
６０５  ロケーションパス対応付け
６０６  ＸＭＬデータ解析リスト
６０７  ＸＭＬデータ解析リスト
６０８  ＸＭＬデータ解析リスト対応付け
６０９  ＸＭＬデータ解析リスト変換結果
６１０  要素番号リスト
６１１  前期構造構築部
６１２  変換結果
【図１】
2008097436.tif 000003
【図２】
2008097436.tif 000004
【図３】
2008097436.tif 000005
【図４】
2008097436.tif 000006
【図５】
2008097436.tif 000007
【図６】
2008097436.tif 000008