JP2008097436A - 構造化文書構造自動解析および構造自動再構築装置 - Google Patents
構造化文書構造自動解析および構造自動再構築装置 Download PDFInfo
- Publication number
- JP2008097436A JP2008097436A JP2006280163A JP2006280163A JP2008097436A JP 2008097436 A JP2008097436 A JP 2008097436A JP 2006280163 A JP2006280163 A JP 2006280163A JP 2006280163 A JP2006280163 A JP 2006280163A JP 2008097436 A JP2008097436 A JP 2008097436A
- Authority
- JP
- Japan
- Prior art keywords
- data
- structured document
- list
- analysis
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
【課題】 構造化文書を、構造の情報を保持したまま分解し、選択したデータだけで構造化文書を再構築することを目的とする。
【解決手段】 任意の構造を持った構造化文書を入力として受け付け、入力された構造化文書を、先頭のタグから順に読み込んでいき、再び構造を再現できる形で、構造の情報を自動的にメモリ上にリスト展開できるように解析し、要素や属性の指定によって任意のデータを選択することで、選択したデータだけで、再び構造を構築し直して出力することを行う。
【選択図】 図1
【解決手段】 任意の構造を持った構造化文書を入力として受け付け、入力された構造化文書を、先頭のタグから順に読み込んでいき、再び構造を再現できる形で、構造の情報を自動的にメモリ上にリスト展開できるように解析し、要素や属性の指定によって任意のデータを選択することで、選択したデータだけで、再び構造を構築し直して出力することを行う。
【選択図】 図1
Description
構造化文書の取り扱いに関する。
従来、入力される構造化文書から、必要な情報を選択し、その選択した情報だけを、構造を保ったまま抜き出して出力する場合、人間があらかじめ入力される構造化文書の構造を把握した上で、XSLTの作成や構造化文書から情報を抽出するプログラミングを行っていた。
従来例としては、例えば特許文献1と特許文献2をあげることが出来る。
特開平10-240752号公報
特開平11-242676号公報
しかしながら、入力される構造化文書の構造があらかじめ分からなければ、入力される構造を意識したXSLTの作成や、プログラミングができず、入力される構造化文書から、必要な情報を選択し、その選択した情報だけを、構造を保ったまま抜き出して出力することは困難であった。
上記のような問題を鑑み、入力された構造化文書をSAXによってパースしていき、メモリ上に、パースによって順番に出現する構造化文書の構造における要素ごとにリストを作成し、要素の名前、要素タグの親子関係、兄弟関係、要素タグと要素タグで囲まれる"値"、属性の名前、属性の値を、1つの要素に対して付加情報として対応づけ、リストデータとして構造化文書の構造を分解した情報を保持する。そして、ロケーションパスによって、入力構造化文書の各データを指定することによって、リストデータから関連する情報を抽出し、指定されたデータだけで、元の構造化文書の構造に再構築して出力する装置を提供する。
本発明により、入力される構造化文書の構造をあらかじめ把握してなくてもロケーションパスを与えることで、入力される構造化文書から必要な情報を選択でき、その選択した情報だけを、入力された構造化文書の構造を再び構築できる形で抽出し、構築し直して出力することができることで、構造の分からない構造化文書が入力されても、構造化文書のサブセットを自動的に作ることができ、XSLTの作成や、個々の構造化文書の構造を意識したプログラミングによる人間の作業の負荷を、減らすことができる。
また、入力装置として小リソースのデータしか扱えないデバイスを想定した場合、入力される構造化文書のデータサイズが大きければ、余分な情報を抜き取った形で、データを入力させて処理することができるため、デバイス側で、入力データを扱いやすくなる。また、同様の動きをXSLTを作成して行う場合、入力される構造化文書のデータサイズに比例してXSLT自体のデータサイズも増える、あるいは、入力される構造化文書の構造が違えば、それぞれの構造に対してXSLTを作成する必要があるため、結果的にXSLT自体の容量や数が増えてしまうが、ロケーションパスの組み合わせだけで処理が行えることで、それら大容量のXSLTを取り扱わなくてすみ、小リソースのデータしか扱えないデバイス側にとっても小容量のデータの扱いだけですむ。
また、入力データを提供する側にとって、構造化文書の中で、相手に見せたくない、セキュリティー上公開したくない部分などを切り取った形で、全体の構造化文書の構造は崩さずにロケーションパスの指示だけで出力できることが可能となり、構造化文書の構造を手書きでなおしたり、それに対応するXSLTを作成したりするという人間の負荷が減る。
以下、本発明の実施の形態を、具体例を用いて詳細に説明する。
図 1は、本実施例における装置全体の構成図である。図 1を用いて、以下、本実施例における装置全体の処理の流れを説明する。
図 1中101は、装置内部の各処理部を示したものであり、入力用として図 1中102の構造化文書(inputA.xml)と、出力用として図 1中103の構造化文書(outputB.xml)(共にXMLデータであり、以下XMLデータと表現する)と図 1中104、105のそれぞれの構造化文書の内部データを指し示すロケーションパスの組み合わせ(ロケーションパスA、ロケーションパスB)を、図 1中106の入力部で受け取り、処理を開始する。図 1中107は、構造自動解析装置であり、その内部の処理の流れを示したのが図 1中108である。図 1中109は、構造解析&分解部であり、SAX(The Simple API for XML)エンジンを利用して、入力されたXMLデータをパースしていき、メモリ上に、パースによって順番に出現するXMLデータの構造における要素ごとにリストを作成し、要素の名前、要素タグの親子関係、兄弟関係、要素タグと要素タグで囲まれる"値"、属性の名前、属性の値を1つの要素に対して付加情報として対応づけ、XMLデータ解析リストとしてXMLデータの構造を分解した情報を保持する。図 1中110はロケーションパス解析部であり、入力されたロケーションパスをそれぞれ解析し、メモリ上に作成したXMLデータ解析リストの内容を指し示せる形で保持しておく。図 1中111はデータ選択&抽出部であり、XMLデータ解析リストから、保持してあるロケーションパスが指し示すデータのリスト番号と、そのリスト番号と親子関係あるいは兄弟関係など関連するリスト番号をすべて選択し、抽出する。図 1中112は構造構築部であり、XMLデータ解析リストと選択されたリスト番号から、一度分解したXMLデータを選択されたデータだけで構築しなおして、XMLデータとして出力することを行う。図 1中113は、ロケーションパス対応付け&データ変換処理部であり、入力部に入力されたロケーションパスAとBのロケーションパスを1対1で対応付け、入力用XMLデータ(inputA.xml)と出力用XMLデータ(outputB.xml)のそれぞれのXMLデータ解析リストの中身のデータをロケーションパスの対応付けによって変換し、変換した出力用XMLデータのXMLデータ解析リストを出力する。図 1中114は構造構築部であり、XMLデータ解析リストから再びXMLデータとして構築するという図 1中112と同様の処理を行い、図 1中115の出力部から、図 1中116の構築したXMLデータ(output.xml)を出力することを行う。
次に、前記構成図における各処理部の処理の詳細を示す。図 2は、前記構造自動解析装置内、構造解析&分解部についての処理内容を記述している。図 2中201は、前記入力データの入力用としたXMLデータの具体例である。この1つのXMLデータを利用して以下処理内容を説明していく。図 2中202は構造解析&分解部であり、図 2中203に処理のフローを示す。図 2中204でXMLデータを入力し、図 2中205でSAXエンジンによって、XMLデータを先頭のタグからパースしていく。図 2中206で、メモリ上にパースによって順番に出現するXMLデータの構造における要素ごとに番号を振ってリストを作成し、図 2中207で、要素の階層番号、要素の名前、namespace名、要素タグと要素タグで囲まれる"値"であるテキスト要素値、要素タグの親を示す親要素番号、要素タグの兄弟を表す1つ前兄弟番号、同じ階層で同じ要素名がある場合に判別できるよう、要素が出現した順番を示す要素出現順番号、要素が持っている属性の数、要素が持っている属性の名前と属性の値を全て、1つの要素に対して付加情報として対応づけ、図 2中208ですべての要素に対し分解処理が終わるか判断し、図 2中209のXMLデータ解析リストとしてXMLデータの構造を分解した情報を保持する。
図 3は、前記ロケーションパス解析部についての処理内容を示したものである。図 3中301は前記入力用XMLデータの中のデータを指し示すロケーションパスの具体例である。このロケーションパスを利用して以下処理内容を説明していく。図 3中302でロケーションパスを入力し、図 3中303で図 3中304の形で、ロケーションパスを分解し、リストとしてメモリ上に保持する。その際にたとえば、student[position()="2"]という表現があれば、これは、同一階層番号上に同じ要素名が存在し、それを区別するために、その中でも2番目の要素という指定がされていることになるが、これは、student#2という形でメモリ上に保持する。同様に、例えば、class/@numberという表現があれば、class@numberという形でメモリ上に保持する。
図 4は前記データ選択&抽出部の処理内容の詳細を示したものである。図 4中401は前記構造解析&分解部から出力されたXMLデータ解析リストである。図 4中402は、前記ロケーションパス解析部から出力されたロケーションパスのリストである。図 4中403は前記データ選択&抽出部の処理をフローチャートで示したものである。図 4中404で図 4中402のロケーションパスのリストを順に取得する。図 4中405で、XMLデータ解析リストから、要素番号順にリスト(図 4中400)を取得し、取得したリストから要素名と、取得したロケーションパスリストの最下層の要素名address(図 4中402では、リストの1番目ならaddress、リストの2番目ならtel、リストの3番目ならname)を比較していき、XMLデータ解析リスト内の要素名がロケーションパスで指定された要素名と同じ要素名であるか検索する。図 4中406で要素名が同じでなければ、次の要素番号のリストを取得する処理まで戻る。同じであれば、図 4中407で、その要素番号を保存する。図 4中408で、その要素番号に対するリスト内から親要素番号を検索する。図 4中409において、親要素番号が-1であれば、図 4中422でヒットしたリスト番号と、それに関係する保存したリスト番号を出力する。1番最初から-1であれば、ルートの要素名であり、関係する保存したリスト番号は無い。親要素番号が-1でなければ、図 4中410で親要素番号が示すリストを取得する。図 4中411で取得してあるロケーションパスに、最下層の要素名の親の要素名(リスト1であればaddressの前のsecurity)が指定されているか検索する。図 4中412で、指定されているか、されていないか判断し、指定されていなければ、その親要素番号の示すリストは必要なデータであるので、保存する。指定されていれば、親要素番号の示すリストの要素名と、そのロケーションパスで指定されている要素名を順(例security→teacher)に比較していく。図 4中414で、ロケーションパスで指定された要素名と、XMLデータ解析リスト内の親要素番号を辿っていき、ひとつでも要素名の不一致があれば、その親要素番号で指定したリストデータは必要が無いと判断し、次の要素番号のリストを取得する処理に戻る。要素名が一致していれば、図 4中415でロケーションパスで指定されている要素名に#?(?:数値)が付加されているか確認する。図 4中416で#?が付加されているか判断し、付加されていれば、#?の?で指定された番号と、図 4中417で要素出現順番号を検索した番号を図 4中418で比較する。図 4中419で番号が一致しているか判断し、一致していなければ、その親要素番号で指定したリストデータは必要が無いと判断し、次の要素番号のリストを取得する処理に戻る。一致していれば、その親要素番号を保持(図 4中420)し、そのリストデータの親要素番号を取得(図 4中421)し、親要素番号が-1でないかの判断の処理からまた繰り返す。最終的にロケーションパスで指定されたパスで、XMLデータ解析リスト内でヒットした要素番号とそれに関係する要素番号を保持する。
さらに具体的に書くと、図 4中402のロケーションパスで1番目のリストのロケーションパス(teacher/security/address)にヒットする番号は、全部で、5→4→2→1→0の順でヒットし、これらが抽出される番号となる。1つのロケーションパスに対して処理が終われば、2番目のロケーションパス(class/student[position="2"]/security/tel)を取得し、同様の処理を繰り返す。2番目のリストのロケーションパスにヒットする番号は、16→14→12→1→0の順でヒットする。3番目のリストのロケーションパス(name)にヒットする番号は、nameという指定だけなので、3→2→1→0、8→7→1→0、13→12→1→0という順番でヒットする。
すべての処理が終わった時点で、抽出した番号で重なるものがあれば、重複した番号は1つだけ残し、その他はすべて削除し、最終的に残った番号を出力する。その結果として、図 4中423で示した番号となり、これが、すべてのロケーションパスで指定されたデータに関連する要素番号である。
図 5は、前記構造構築部の処理内容の詳細を示したものである。図 5中501は前記構造解析&分解部から出力されたXMLデータ解析リストである。図 5中502は前記データ選択&抽出部で選択された要素番号のリストである。図 5中503は前記構造構築部の処理をフローチャートで示したものであり、以下処理の流れを説明する。図 5中504で、XMLデータ解析リスト(図 5中501)を取得する。図 5中505で、XMLデータ解析リストから抽出する要素番号を保持したリスト(図 5中502)を取得する。図 5中506でXMLデータ解析リストから図 5中502で取得した要素番号のリストデータ(図 5中500)を順に取得する。図 5中507で、抽出したリストデータの階層番号を取得し保持する。図 5中508で、前回保持した階層番号と今回保持した階層番号を比較する。図 5中509で、初回の処理でない、もしくは、前回保持階層番号>=今回取得階層番号 の判断で偽ならば、図 5中510で、リストデータから要素名を取得し、「<要素名>」 の開始タグの形にして(‘<’‘>’記号を付加して)文字列(図 5中520)として格納する。図 5中511で、リストデータから属性名、属性値があれば順に取得し、開始タグの中に追加する形で、文字列(図 5中520)に追加する。図 5中512で、リストデータからテキスト要素値があれば取得し、開始タグの後に、文字列(図 5中520)として追加する。図 5中513で取得した要素名を「</要素名>」 の終了タグの形にして、スタック(図 5中521)に格納(push)する。図 5中509の判断で真ならば、図 5中514でスタック(図 5中521)に格納してある終了タグを1回取り出して(pop)文字列(図 5中520)に格納する。図 5中515で図 5中501のXML解析リストから図 5中502の要素番号のリストに記述されている要素番号のデータ分、抽出していなければ、図 5中506の処理に戻り、抽出していないデータに対して同様の処理を繰り返す。記述された要素番号のデータをすべて抽出し終わったら、図 5中516で、図 5中521のスタックに終了タグがまだ残っているか確認する。図 5中517で、図 5中518で残っていれば、スタックから終了タグを取得(pop)し、文字列(図 5中520)に追加する。終了タグが残っていなければ、図 5中519で、格納した文字列(図 5中520)を出力する。図 5中501のXML解析リストから、図 5中502の要素番号のリストに記述されている要素番号のデータだけを抽出して、文字列を組み立て最終的に出力すると図 5中522のXMLデータとして出力され、入力されたXMLデータの構造を崩さず、ロケーションパスによって選択されたデータだけを抜き出して、XMLデータとして出力できる。
図 6は、前記ロケーションパス対応付け&データ変換処理部の処理内容の詳細を示したものである。これまでは、入力されたXMLデータが1つで、そのデータからロケーションパスで選択したデータだけを抽出してXMLデータとして構造を崩さずに構築しなおして出力するところまで述べたが、前記ロケーションパス対応付け&データ変換処理部を、前期構造構築部の処理が行われる前に加えることで、前記入力データの入力用としたXMLデータ(以下入力用XMLデータとする)、前記入力データの出力用としたXMLデータ(以下出力用XMLデータとする)をそれぞれ読み込み、入力用XMLデータからロケーションパスで選択したデータを、出力用XMLデータのロケーションパスで選択した要素に挿入することで、異なる構造をしたXMLデータによるデータの変換が可能となる。以下その流れを説明する。
図 6中601は、入力用XMLデータであり、これまでの説明の中で使用してきたXMLデータと同様の構造とデータ内容である。図 6中602は、出力用XMLデータであり、既にテキスト要素値が一部格納してあり、入力用XMLデータとは構造が異なっている。図 6中603は、入力用XMLデータに対するロケーションパスであり、図 6中604は、出力用XMLデータに対するロケーションパスである。ロケーションパス対応付け部では、この両者のロケーションパスを図 6中605のようにリストの一番目同士、二番目同士という形で、1対1で対応付ける。このロケーションパスの対応付けの情報を使って、データ変換処理部では、メモリ上に保持してある入力用XMLデータを読み込み解析した結果を示す図 6中606のXMLデータ解析リストから、出力用XMLデータを読み込み解析した結果を示す図 6中607のXMLデータ解析リストへ、それぞれ、ロケーションパスで選択されたデータを示す要素番号を検索し、それぞれデータをコピーする(図 6中608)ことを行い、その結果を図 6中609のXMLデータ解析リストとして出力する。このデータの要素番号をすべてリストのデータとして、図 6中611の前記構造構築部に渡す。前記構造構築部は、図 6中609のXMLデータ解析リストと図 6中610の要素番号のリストを受け取り、図 5を使用して記述した処理を行うことで、図 6中612のXMLデータを出力する。具体的に見ると、入力用XMLデータ内のデータである、Aさん、東京都、045-3333-3333というテキスト要素値が、出力用XMLデータのそれぞれ、ロケーションパスで選択されたテキスト要素値へ格納される。
この結果、構造の異なるXMLデータからロケーションパスで指定したデータを、別の構造を持ったXMLデータで、ロケーションパスで指定した場所にデータを挿入できることで、結果的に、XMLの構造が変換されて出力されることがわかる。よって、あらかじめ入力用XMLデータと出力用XMLデータの構造を把握していなくても、XMLデータの解析から自動的に行うので、動的なデータの交換=動的なXMLの構造変換、が成り立つ。本実施例では、テキスト要素値の変換しか行っていないが、属性値に対してもロケーションパスの指定で、同様の処理、同様の結果を得ることができる。
101 処理全体構成図
102 入力XMLデータ
103 ロケーションパスデータ
104 入力XMLデータ
105 ロケーションパスデータ
106 入力部
107 構造自動解析装置
108 構造自動解析装置構成図
109 構造解析&分解部
110 ロケーションパス解析部
111 データ選択&抽出部
112 構造構築部
113 ロケーションパス対応付け&データ変換処理部
114 構造構築部
115 出力部
116 出力XMLデータ
201 入力XMLデータ
202 構造解析&分解部モジュール
203 構造解析&分解部処理の流れ
204 XML入力処理
205 パース開始処理
206 出現する要素ごとにメモリ上にリストを作成する処理
207 要素に関わる必要情報を取得しリストに付加していく処理
208 全ての要素に対する必要情報の抽出、分解処理が終わり次第パースを終了する処理
209 XMLデータ解析リスト
301 ロケーションパス具体例
302 ロケーションパス入力処理
303 与えられたロケーションパスを1から順に解析して分解しメモリ上にリストとして保存する
304 ロケーションパスを分解した結果リスト
400 XMLデータ解析リスト中要素番号で選択されたリスト
401 XMLデータ解析リスト
402 ロケーションパスを分解した結果リスト
403 処理全体フロー
404 ロケーションパスのリストを順に取得する処理
405 要素番号順にリストのデータを読んでいき、取得したロケーションパスの最下層の要素名があるか検索する処理
406 要素名があるか判断
407 ヒットしたリストの番号を保存する処理
408 ヒットしたリスト内の親要素番号を検索する処理
409 親要素番号が -1であるかないか判断
410 親要素番号が示すリストを取得する処理
411 保存してあるロケーションパスに次の要素名が指定されているか検索する処理
412 指定しているか判断
413 取得したリストの要素名と保存してあるロケーションパスを順に比較する処理
414 要素名が一致するか判断
415 ロケーションパスの要素名の#?(?:数値)を検索する処理
416 #?があるか判断
417 取得したリストの要素出現番号を検索する処理
418 取得した要素出現番号と#?の?で指定された番号を比較する処理
419 番号が一致するか判断
420 取得したリストの番号を保存する処理
421 取得したリストの親要素番号を検索する処理
422 ヒットしたリスト番号とそれに関係する保存したリスト番号を出力する処理
423 選択された要素番号リスト
500 XMLデータ解析リスト中要素番号で選択されたリスト
501 XMLデータ解析リスト
502 選択された要素番号リスト
503 処理全体フロー
504 リスト(501)取得する処理
505 抽出するリスト番号を格納したリスト(502)を取得する処理
506 501のリストから502で指定したリスト番号のデータを順に抽出する処理
507 階層番号を取得し保持する処理
508 前回保持してあった階層番号と今回保持した階層番号を比較する処理
509 初回の処理でなく、前回保持階層番号>=今回取得階層番号 であるかどうか判断
510 502で指定した番号リストデータから要素名を取得し、<要素名>開始タグの形で文字列(520)として格納する処理
511 502で指定した番号のリストデータから属性名、属性値があれば順に取得し、要素名のあとに文字列(520)として追加する処理
512 502で指定した番号リストのデータからテキスト要素値があれば取得し開始タグの後に文字列(520)として追加する処理
513 取得した要素名を終了タグの形にしてスタック(521)に追加する処理
514 スタック(521)にためてある終了タグを1回popして文字列(520)に追加して格納する処理
515 502のリスト番号分抽出してないかどうか判断
516 スタックに終了タグがあるか検索する処理
517 終了タグがスタックにあるか判断
518 取得した終了タグを文字列として格納する処理
519 格納した文字列を出力する処理
520 最終出力用文字列
521 スタックイメージ
522 XMLデータ構築結果
601 入力用XMLデータ
602 出力用XMLデータ
603 ロケーションパスデータ
604 ロケーションパスデータ
605 ロケーションパス対応付け
606 XMLデータ解析リスト
607 XMLデータ解析リスト
608 XMLデータ解析リスト対応付け
609 XMLデータ解析リスト変換結果
610 要素番号リスト
611 前期構造構築部
612 変換結果
102 入力XMLデータ
103 ロケーションパスデータ
104 入力XMLデータ
105 ロケーションパスデータ
106 入力部
107 構造自動解析装置
108 構造自動解析装置構成図
109 構造解析&分解部
110 ロケーションパス解析部
111 データ選択&抽出部
112 構造構築部
113 ロケーションパス対応付け&データ変換処理部
114 構造構築部
115 出力部
116 出力XMLデータ
201 入力XMLデータ
202 構造解析&分解部モジュール
203 構造解析&分解部処理の流れ
204 XML入力処理
205 パース開始処理
206 出現する要素ごとにメモリ上にリストを作成する処理
207 要素に関わる必要情報を取得しリストに付加していく処理
208 全ての要素に対する必要情報の抽出、分解処理が終わり次第パースを終了する処理
209 XMLデータ解析リスト
301 ロケーションパス具体例
302 ロケーションパス入力処理
303 与えられたロケーションパスを1から順に解析して分解しメモリ上にリストとして保存する
304 ロケーションパスを分解した結果リスト
400 XMLデータ解析リスト中要素番号で選択されたリスト
401 XMLデータ解析リスト
402 ロケーションパスを分解した結果リスト
403 処理全体フロー
404 ロケーションパスのリストを順に取得する処理
405 要素番号順にリストのデータを読んでいき、取得したロケーションパスの最下層の要素名があるか検索する処理
406 要素名があるか判断
407 ヒットしたリストの番号を保存する処理
408 ヒットしたリスト内の親要素番号を検索する処理
409 親要素番号が -1であるかないか判断
410 親要素番号が示すリストを取得する処理
411 保存してあるロケーションパスに次の要素名が指定されているか検索する処理
412 指定しているか判断
413 取得したリストの要素名と保存してあるロケーションパスを順に比較する処理
414 要素名が一致するか判断
415 ロケーションパスの要素名の#?(?:数値)を検索する処理
416 #?があるか判断
417 取得したリストの要素出現番号を検索する処理
418 取得した要素出現番号と#?の?で指定された番号を比較する処理
419 番号が一致するか判断
420 取得したリストの番号を保存する処理
421 取得したリストの親要素番号を検索する処理
422 ヒットしたリスト番号とそれに関係する保存したリスト番号を出力する処理
423 選択された要素番号リスト
500 XMLデータ解析リスト中要素番号で選択されたリスト
501 XMLデータ解析リスト
502 選択された要素番号リスト
503 処理全体フロー
504 リスト(501)取得する処理
505 抽出するリスト番号を格納したリスト(502)を取得する処理
506 501のリストから502で指定したリスト番号のデータを順に抽出する処理
507 階層番号を取得し保持する処理
508 前回保持してあった階層番号と今回保持した階層番号を比較する処理
509 初回の処理でなく、前回保持階層番号>=今回取得階層番号 であるかどうか判断
510 502で指定した番号リストデータから要素名を取得し、<要素名>開始タグの形で文字列(520)として格納する処理
511 502で指定した番号のリストデータから属性名、属性値があれば順に取得し、要素名のあとに文字列(520)として追加する処理
512 502で指定した番号リストのデータからテキスト要素値があれば取得し開始タグの後に文字列(520)として追加する処理
513 取得した要素名を終了タグの形にしてスタック(521)に追加する処理
514 スタック(521)にためてある終了タグを1回popして文字列(520)に追加して格納する処理
515 502のリスト番号分抽出してないかどうか判断
516 スタックに終了タグがあるか検索する処理
517 終了タグがスタックにあるか判断
518 取得した終了タグを文字列として格納する処理
519 格納した文字列を出力する処理
520 最終出力用文字列
521 スタックイメージ
522 XMLデータ構築結果
601 入力用XMLデータ
602 出力用XMLデータ
603 ロケーションパスデータ
604 ロケーションパスデータ
605 ロケーションパス対応付け
606 XMLデータ解析リスト
607 XMLデータ解析リスト
608 XMLデータ解析リスト対応付け
609 XMLデータ解析リスト変換結果
610 要素番号リスト
611 前期構造構築部
612 変換結果
Claims (7)
- 構造化文書を入力する入力部と
構造化文書の全体の構造と内部データを解析して分解しまとめる手段と
構造化文書の特定の部分を指定するデータを解析する手段と
構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段と
構造化文書を構築する手段と
構造化文書を出力する出力部と
を有する構造化文書構造自動解析および構造自動再構築装置であって、
前記入力部と出力部はそれぞれ通信部を備え
前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段は、入力された構造化文書をデータの先頭から順に読み込み、構造を再現するために必要な情報を判別し、内部データにその情報を付加した形で保持し、
構造化文書の特定の部分を指定するデータを解析する手段は、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段でまとめたデータにアクセスできる形で、特定の部分を指定するデータをまとめて保持し、
構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段は、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段でまとめられたデータから、前記構造化文書の特定の部分を指定するデータを解析する手段で解析して得られたデータで、選択された特定の部分を、その部分に付加された構造を再現するための情報と共に抽出し、
前記構造化文書を構築する手段は、前記構造化文書の特定の部分を選択して構造の情報が付加されたデータを抽出する手段で抽出されたデータから、構造を再現するための情報を示すデータを判別し、その判別したデータを利用して、再び入力された構造化文書の構造を崩さずに、選択されたデータだけで組み立てなおして構造化文書の形を作り出力する。
構造化文書の解析、分解、構造化文書の特定の部分を指定するデータの解析、構造化文書の構築といった技術を組み合わせることによって、人手を介さず、任意の構造をした構造化文書を入力データとして処理し、指定された任意のデータだけで、構造を崩さずに構造化文書を構築しなおし出力することを特徴とする構造化文書構造自動解析および構造自動再構築装置。 - 請求項1において、前記構造化文書を入力する入力部が受け取る構造化文書は、XMLデータであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
- 請求項1乃至2において、前記入力部内の通信部は、インターネットを含んだネットワークであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
- 請求項1乃至3において、構造化文書の全体の構造と内部データを解析して分解しまとめる手段は、構造化文書を読み込み、タグ構造を解釈し、タグとタグの親子関係、兄弟関係、およびタグとタグに囲まれた中身の情報およびタグ内に記述された情報を判断し、その情報を1つのタグに対して付加して、1つのタグごとにまとめて保持することを特徴とする構造化文書構造自動解析および構造自動再構築装置。
- 請求項1乃至4において、前記構造化文書の特定の部分を指定するデータを解析する手段における特定の部分を指定するデータはロケーションパスであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
- 請求項1乃至5において、前記構造化文書を構築する手段は、前記特定の部分を指定するデータによって選択されたデータだけで構築するだけでなく、全てのデータと指定することで、前記構造化文書の全体の構造と内部データを解析して分解しまとめる手段で、1度分解した入力された構造化文書を、再び同一の構造化文書として構築し直すことができることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
- 請求項1乃至6において、前記出力部内の通信部は、インターネットを含んだネットワークであることを特徴とする構造化文書構造自動解析および構造自動再構築装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006280163A JP2008097436A (ja) | 2006-10-13 | 2006-10-13 | 構造化文書構造自動解析および構造自動再構築装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006280163A JP2008097436A (ja) | 2006-10-13 | 2006-10-13 | 構造化文書構造自動解析および構造自動再構築装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008097436A true JP2008097436A (ja) | 2008-04-24 |
Family
ID=39380200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006280163A Withdrawn JP2008097436A (ja) | 2006-10-13 | 2006-10-13 | 構造化文書構造自動解析および構造自動再構築装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008097436A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012164305A (ja) * | 2011-01-18 | 2012-08-30 | Apple Inc | 文書内のリストの再構築 |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
JP2013178650A (ja) * | 2012-02-28 | 2013-09-09 | Kyocera Document Solutions Inc | ソフトウェア開発用構造化データファイル作成装置 |
-
2006
- 2006-10-13 JP JP2006280163A patent/JP2008097436A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012164305A (ja) * | 2011-01-18 | 2012-08-30 | Apple Inc | 文書内のリストの再構築 |
US8380753B2 (en) | 2011-01-18 | 2013-02-19 | Apple Inc. | Reconstruction of lists in a document |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
US8886676B2 (en) | 2011-01-18 | 2014-11-11 | Apple Inc. | Reconstruction of lists in a document |
US8959116B2 (en) | 2011-01-18 | 2015-02-17 | Apple Inc. | Storage of a document using multiple representations |
JP2013178650A (ja) * | 2012-02-28 | 2013-09-09 | Kyocera Document Solutions Inc | ソフトウェア開発用構造化データファイル作成装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3879350B2 (ja) | 構造化文書処理システム及び構造化文書処理方法 | |
Beazley et al. | Python cookbook: Recipes for mastering Python 3 | |
JP4860416B2 (ja) | 文書検索装置、文書検索方法および文書検索プログラム | |
US8234288B2 (en) | Method and device for generating reference patterns from a document written in markup language and associated coding and decoding methods and devices | |
US20080097744A1 (en) | Context-free grammar | |
CN111382192B (zh) | 一种数据列表展示方法、装置和电子设备 | |
JP2005234837A (ja) | 構造化文書処理方法、構造化文書処理システム及びそのプログラム | |
US20110087698A1 (en) | Search expression creating system, search expression creating method, search expression creating program, and recording medium | |
KR100899616B1 (ko) | 관계형 데이터베이스를 이용한 메타데이터 관리 방법 및시스템 | |
Jones et al. | Interoperability for accessing versions of web resources with the memento protocol | |
JP2008097436A (ja) | 構造化文書構造自動解析および構造自動再構築装置 | |
CN117950636A (zh) | 一种针对后端微服务的项目构建方法及系统 | |
US7900136B2 (en) | Structured document processing apparatus and structured document processing method, and program | |
US20080208876A1 (en) | Method of and System for Providing Random Access to a Document | |
JP2002169836A (ja) | 情報の集約整理支援システム | |
JP4207992B2 (ja) | 構造化文書処理システム及び構造化文書処理方法 | |
JP2009080681A (ja) | プログラム構造解析方法及び装置 | |
US7149758B2 (en) | Data processing apparatus, data processing method, and data processing program | |
CN115774767B (zh) | 一种地理信息元数据处理方法及装置 | |
JP2003108369A (ja) | Webからの要求を受け取り結果出力を行うプログラムの自動生成 | |
JP4675748B2 (ja) | Xmlデータ変換装置及びxmlデータ復元装置 | |
JP5400344B2 (ja) | ドキュメント変換装置、およびプログラム | |
KR20100014116A (ko) | 탭을 위한 규칙 기반의 사용자 정의된 wi-메카니즘 | |
WO2008107802A2 (en) | Method and device for processing documents on the basis of enriched schemas and corresponding decoding method and device | |
JP2005215950A (ja) | 符号化された文書データの検索方法及びそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20100105 |