JP4086253B1 - Xml文書の処理方法および処理プログラム - Google Patents
Xml文書の処理方法および処理プログラム Download PDFInfo
- Publication number
- JP4086253B1 JP4086253B1 JP2006352851A JP2006352851A JP4086253B1 JP 4086253 B1 JP4086253 B1 JP 4086253B1 JP 2006352851 A JP2006352851 A JP 2006352851A JP 2006352851 A JP2006352851 A JP 2006352851A JP 4086253 B1 JP4086253 B1 JP 4086253B1
- Authority
- JP
- Japan
- Prior art keywords
- row
- column
- data
- xml document
- tag
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
Abstract
【解決手段】対象とするXML文書から取得したパス情報を表見出しとし、XML文書の文書内容を等価テーブルに展開する。ブロック型展開方法は、要素による入れ子をブロックによる入れ子として展開する。展開方法に対応した復元方法によって、等価テーブルからXML文書を復元する。ブロック型展開方法・ブロック型復元方法の定位置性を利用して、XML文書の構造変換、非構造化文書のXML文書化を行う。また、配置テーブルから配置データを検出し、1次元配列に整理し、パス情報を含めて等価ファイルを作成する。XML文書の文書内容の把握・参照、XML文書の作成・編集を容易にし、XML文書の構造変換、非構造化文書のXML文書化、および等価ファイルの作成を行う。
【選択図】図20
Description
1)SGMLの仕様では、省略タグ機構あるいは短縮タグ機構を、SGML宣言および文書型定義DTD(Document Type Definition)で定義する。しかし、XMLの仕様では、これらの機構を削除している。
2)SGMLの仕様では、省略タグ機構あるいは短縮タグ機構を認めているため、DTDが必須となる。XMLの仕様では、DTDなどのスキーマを明示しないあるいはスキーマに基づいていない「整形式XML文書(Well-formed XML)」を認めている。
1)DOM(Document Object Model);XML文書の参照や作成などの各種処理を目的とするアプリケーションインターフェース。
2)XPath(XML Path Language);XML文書の特定部分を経路(パス)と順序を指定するための言語。
3)XSLT(XSL Transformations);XML文書の文書構造を変換するための言語。
1)木構造データは、配列に比べ複雑なデータ構造であり、木構造データを取り扱うプログラムは一般に複雑なものとなる。
2)DOMを用いる処理は、XML文書の全データをDOM木に展開するために、文書サイズよりも大きなメモリ量が必要となる。また、文書サイズによっては展開あるいは復元などの処理に多大な時間を要する場合がある。したがって、処理装置のハードウェア資源に応じた、DOMで取り扱うことができる文書サイズの上限が存在することになる。
実施例1:XML文書の概要および展開のための準備処理
実施例2:ライン型展開方法およびライン型復元方法
実施例3:ブロック型展開方法およびブロック型復元方法
実施例4:等価テーブルを用いた解析・編集方法
実施例5:展開時の連結処理
実施例6:XML文書の構造変換
実施例7:非構造化文書のXML文書化方法
実施例8:等価ファイルの作成方法
本願では、XML文書を等価テーブルに展開する際に、要素の出現順序を確保する方法として、後述するライン型展開方法およびブロック型展開方法の2方法を開示する。これら展開方法の詳細については後述するものとして、ここでは、XML文書の概要を示すとともに、XML文書を展開するための準備処理および展開後の後処理について説明する。具体的には、展開時に用いるパス情報、パス情報の取得方法、配置データの記述方法、等価テーブルの構成、および共通する準備処理と後処理のフローについて説明する。
始めにXMLの基本的な用語を説明し、簡単なXML文書についての解釈例を示す。
(1.1.1)要素
要素は、開始タグと終了タグとの間に要素内容を含む。要素内容には、文字データまたは要素を複数含むことができる。このため要素は、複数の子要素を入れ子として含むことができる。XMLの仕様では、要素は以下のように定義される(省略可能な空白文字を省く)。ここで、カンマ(",")は連続的な接続を示し、バー("|")は選択を示す。また、アスタリスク("*")は複数の繰り返しを示す。なお、本願では、名前空間を示す接頭辞はタグ名に含まれるものとする。
要素 = (開始タグ,要素内容,終了タグ)|空要素
開始タグ = "<",タグ名,属性*,">"
属性 = " ",属性名,"=","属性値"
要素内容 = 文字データ|要素*
終了タグ = "</",タグ名,">"
空要素 = (開始タグ,終了タグ)|("<",タグ名,属性*,"/>")
コメント = "<!−−",コメント内容,"−−>"
CDATAセッション = "<![CDATA[",内容,"]]>"
処理命令 = "<?",処理対象," ",処理内容,"?>"
XMLの内容モデルは、複数の要素を"A,B,・・,Z"のように展開した形で示すと次の内容モデルに区分される。
a)要素内容モデル:子要素として要素のみを含むモデルである。なお、本願では、要素内容モデルを順序固定性の観点より、下記のように順序型の要素内容モデルと選択型の要素内容モデルに細区分する。両者を組み合わせた型については、選択型の要素内容モデルとする。
a−1)順序型:A=(B,C,・・,Z)
a−2)選択型:A=(B|C|・・|Z)、A=(B,(C|D),・・Z)
A=(#PCDATA,A|B|C|・・|Z)*
A="ANY"=(#PCDATA|宣言した要素)*
A="ENPTY"
次に簡単なXML文書の例(文書例1)を示す。ここで、要素をA,B,・・、要素に対応するタグ名をa,b,・・、また文字データをt1,t2,・・とする。
<a Doc="Sample1">t1<b>t2<c>t3</c>t4</b>t5<d>t6</d>t7</a>
<a Doc="Sample1">t1
<b>t2
<c>t3</c>t4
</b>t5
<d>t6</d>t7
</a>
要素A[1]:属性:Doc="Sample1",t1,要素B,t5,要素D,t7
要素B[2]:t2,要素C,t4
要素C[3]:t3
要素D[2]:t6
XML文書の特定部分に対する経路と順序を指定するXPathでは、下記のように記述される。
ロケーションステップ="軸","ノードテスト",0回以上の"[述部]"
ロケーションパス=現位置の要素から対象要素(対象ノード)までの集合
要素A:/a
要素B:/a/b
要素C:/a/b/c
要素D:/a/d
本発明によるXML文書を等価テーブルに展開し、また復元する方法は、いずれも等価テーブルの見出し情報としてのパス情報に基づいて実行している。ここではパス情報について、スキーマが規定する文書構造の自由度、パス情報の順序固定性、展開方法との関係、取得方法および利用の観点から説明する。
文書例1の解釈例は、スキーマが明示されていない場合でも、開始タグと開始タグに対応する終了タグをもとにして、XML文書の要素とその要素内容を把握することができることを示している。また、各要素のパスも特定できることを示している。つまり、XML文書に含まれる要素の入れ子関係よりパスを特定し、XML文書の文書内容についてパスを用いて整理することができることを示す。
ここでは、パス情報の順序固定性によるXML文書の区分、およびXML文書の区分と展開方法の適用性との関係について説明する。
図3(a)は、順序非固定型XML文書のパスリストの例として、インターネットで公開されているあるXHTML文書から取得したパスリストを示したものである。このパスリストは、XML文書中のパスに着目し走査し、新規に出現するパスを単にパスリストに追加したものである(角括弧内の数値はパスの出現番号を示す)。その結果、パスリストは、共通の親をもつパスでも分散して出現することになり、後述の展開方法や復元方法などの処理を行うためには十分ではなく、並び替えを行う必要がある。
1)ある着目するパスについて、親要素を示すパスが着目するパスよりも必ず先に出現する。
2)ある着目するパスについて、弟要素を示すパスと子要素を示すパスが共に存在する場合には、子要素を示すパスが先に出現する。
前述したように、構造変換処理、あるいは応用プログラムにXML文書の文書内容を引き渡す処理などを行う場合には、欠落のない完全なパス情報が必要となる。完全なパス情報を取得するためには、スキーマの解析が必要となるが、当然のことながらスキーマ言語によって文法は異なり、対象とするスキーマによっては非常に難解な処理となる。パス情報を取得することに限れば、いずれのスキーマ言語でも、スキーマから内容モデルを特定し、親子関係となる要素から階層値とタグ名を識別し、パス情報を決定することになる。
文書例1は、非常に簡単な文書例であるため、以降の説明では図6に示すXML文書(文書例2)も用いる(角括弧内の数値はXML文書の行数を示す)。文書例2は、スキーマを明示していないが「順序固定型XML文書」であるXML文書とし、ライン型展開方法、ブロック型展開方法、編集、および構造変換の対象文書とする。
XML文書から抽出した要素内容、属性およびコメント系データを配置する際に、要素内容や属性などを分散して格納することは、処理の複雑化を招くとともに、参照や編集などの操作の障害となる。本願では、パス情報で区分される要素について、要素内容や属性など性質の異なるデータを1つの文字列(以下、「配置データ」と記す)にまとめ、後述する等価テーブルに配置する。以下では、XML文書から要素内容や属性などを抽出し、配置データとして表現する際の書式を示す。
本願では、非終端要素の出現を明示的に示すマーク(以下、「ノードマーク」と記す)を等価テーブルに配置することによって非終端要素の出現を表現する。したがって、着目する要素が非終端要素の場合に「ノードマーク」を、終端要素の場合に「要素内容」を配置データとして等価テーブルに格納する。
[ノードマーク]
XML文書の展開時に非終端要素となる開始タグが出現した際に、ユニークな「ノードマーク」を用いて表現する。本実施の形態では、「ノードマーク」を"→"または"→[番号]"で表現した配置データとする。ここで、"[番号]"は非終端要素の出現順序を示したもので、ユーザの理解を容易にするために付加する番号であり、必須のものではない。
開始タグと開始タグに対応する終了タグ間の要素内容を、そのまま配置データとする。空要素あるいは要素内容が空の場合、空マーク("")を配置データとする。
開始タグに含まれる属性は、以下に示すユニークな符号(ただし、文書中の文字列と重複する場合は異なる符合)を用いてマーク付けを行い、当該開始タグの配置データに付加する。
"{At{属性*}}":属性*=開始タグに含まれるすべての属性
タグ間文字データは、次のようなユニークな符号(ただし、文書中の文字列と重複する場合は異なる符合)を用いてマーク付けを行い、直前の開始タグまたは終了タグの配置データに付加する。
"{Ts{文字列}}":文字列=開始タグ直後に出現するタグ間文字データ
"{Ts{文字列}}":文字列=終了タグ直後に出現するタグ間文字データ
コメント系データ(コメント、CDATAセッションおよび処理命令)は、次のようなユニークな符号(ただし、文書中の文字列と重複する場合は異なる符合)を用いてマーク付けを行い、直前の開始タグまたは終了タグの配置データに付加する。
"{Cs{コメント}}":コメント=開始タグ直後に出現するコメント系データ
"{Ce{コメント}}":コメント=終了タグ直後に出現するコメント系データ
要素A:"→[1]{At{Doc="Sample1"}}{Ts{t1}}"
要素B:"→[2]{Ts{t2}}{Te{t5}}"
要素C:"t3{Te{t4}}"
要素D:"t6{Te{t7}}"
XML文書の文書内容を表形式データとしてテーブル(以下、「等価テーブル」と記す)に展開することが可能であれば、要素の速やかな把握、参照材料としての取得、従来アプリケーションと整合を取ることなどの作業が容易となる。さらに、展開した等価テーブルで文書内容の編集を行い、XML文書として復元することが可能であれば、XML文書を更新することができる。
単一のテーブルを基本とし、テーブルの大きさを制限しない。テーブルは、あくまでもXML文書の参照や編集などを行うための一時的な作業テーブルであるため、巨大なテーブルとなってもかまわない。
等価テーブルに要素の順序情報を含めずに、等価テーブルへの配置方法により要素の順序を特定する。仮に、テーブルに要素の順序情報を含めた場合、単に要素を追加したい場合でも順序情報の編集を行う必要が生じる。この際、順序情報をユーザが編集することは困難さと煩雑さを伴う作業となる。また、さまざまな操作に対応した順序情報の変更は、煩雑な処理となる。
XML文書またはスキーマから取得したパス情報を、等価テーブルの見出しとする。このことによって、さまざまなパス情報のXML文書を取り扱うことができる。なお、本実施の形態ではパス情報を列方向に配置するが、パス情報を行方向に配置することも当然可能である。
同一文書構造のXML文書を複数展開する場合、同じパス情報となるため、1つの等価テーブルに複数のXML文書を展開することが可能である。このことによって、展開された文書内容の比較や、複数文書にまたがる処理が容易となる。
本願では、XML文書を等価テーブルに展開する際に、後述するライン型展開方法またはブロック型展開方法によって、要素の出現順序を確保している。以下、これら展開方法の共通する展開前の準備処理および展開後の後処理について説明する。
b)開始タグ+要素内容+終了タグまたは、空要素タグ
c)終了タグ
実施例1では、XML文書の概要を示すとともに、展開で用いるパス情報、パス情報の取得方法、配置データの記述方法、等価テーブルの構成、および展開方法前後の処理フローについて説明した。以下、パス情報にかかわる特徴を整理して示す。
1)パス情報は、階層値とタグ名とからなる配列であり、等価テーブルの見出し情報とする。パス情報からは、要素番号別に、終端要素の識別、終端番号およびパスを特定することができ、XML文書に含まれる要素の親子関係と兄弟関係とを把握することができる。
2)パス情報の順序固定性の観点より、スキーマについては「順序非固定型スキーマ」と「順序固定型スキーマ」に、XML文書については「順序非固定型XML文書」と「順序固定型XML文書」に識別される。
3)パス情報は、XML文書から取得することができ、順序固定型スキーマの場合、当該スキーマを解析することによっても取得することができる。
ここでは、XML文書を等価テーブルにライン型展開方法と、等価テーブルからXML文書を復元するライン型復元方法について説明する。ライン型展開方法およびライン型復元方法は、XML文書について開始タグと終了タグを用いて要素を表現したリストであると捉え、開始タグ、要素内容、終了タグからなる要素の記述順序でリストを展開し、また復元する方法である。
ライン型展開方法では、構文リストを読み込むつどパスを組み立て、要素識別用パスリストと照合し要素番号を求め、要素番号に対応する配置列を決定する。配置済みデータが上書きされる場合に改行し、配置データを配置テーブルに配置する。
図12は、文書例2をライン型展開方法により展開した等価テーブルの例である。図12に示す等価テーブルでは、左横書き文書を読むように、各行を横方向にトレースすることによって、等価テーブルの内容を把握することができる。
ライン型復元方法は、処理対象範囲の配置テーブル(J,I)を対象として、列方向に走査し、ノードマークが出現する場合には開始タグ(I)を出力し、要素内容が出現する場合には、開始タグ(I)、要素内容および終了タグ(I)を連結して出力する。ノードマークまたは要素内容に属性などのデータが付加されている場合、これを分離して復元する。この際、階層値が減少する場合、終了タグを終了タグ用配列から取り出し出力する。
ライン型展開方法とライン型復元方法の主な特徴は以下のとおりである。
1)ライン型展開方法およびライン型復元方法は、パス情報の順序固定性にかかわらず、すべてのXML文書を対象とし展開と復元を行うことが可能である。
2)ライン型展開方法による等価テーブルは、左横書きの文書を読む場合と同様に、配置テーブルに展開された内容の把握を容易に行うことができる。
ここでは、XML文書を等価テーブルにブロック型展開方法と、等価テーブルからXML文書を復元するブロック型復元方法について説明する。ブロック型展開方法およびブロック型復元方法は、XML文書の入れ子をなす要素(部分木)を、等価テーブルにおいて入れ子をなすブロックに対応させて処理を行う方法である。
ブロック型展開方法で対象とするXML文書例として、図6に示す文書例2を使用する。図15は、要素による入れ子構造を説明するために、各要素の範囲を囲み表示したものである。なお、非終端要素については番号を付しているが、終端要素の番号については図面の簡素化のため省略している。
図19は、文書例2をブロック型展開方法による等価テーブルの例である。この等価テーブルの内容を速やかに理解するためには、ブロックの識別、ブロックによる入れ子構造、およびブロックによる入れ子構造とXML文書の要素(部分木)による入れ子構造の関係を把握しておく必要がある。これらの事項について順に説明した後に、等価テーブルの内容の把握方法について説明する。
2)ブロックの列範囲は、ノードマークとその子孫要素が展開されうる列範囲となる。すなわち、ノードマークの配置列Iから終端番号(I)までの範囲となる。
3)ブロックの行範囲は、ノードマークの子孫要素が配置されている行範囲となる。
4)終端要素は、1列1行の大きさのブロックとなる。
ブロック型復元方法は、列範囲と行範囲とで区画される任意のブロックが、図20に示すように、1つまたは複数の子要素からなるブロック(部分木)を含むものとして捉え、ノードマークの配置をもとにして終端要素が出現するまで列分割処理と行分割処理とを繰り返し分割する。一方の分割処理(行分割処理)で、ノードマークが出現する際に開始タグを出力し、終端要素が出現する際にその要素内容を出力し、分割処理から戻る際に終了タグを出力する。ブロック中に未処理範囲が残存する場合、未処理範囲を新たなブロックとしさらに分割する。処理対象範囲の全体を処理することによって、XML文書を復元する方法である。
ブロック型復元方法では、復元の対象範囲を設定(ステップ2202)した後に、行分割処理と列分割処理とを実行している。このことは、任意の矩形領域を復元の処理対象範囲(906)として設定することが可能となることを示す。範囲の設定は、図28に示す引数のほか、複数の親要素のブロック範囲にまたがった範囲でもよい。たとえば、行範囲=1〜10、列範囲=3〜7とし復元した場合、要素Aおよび要素Bのノードマークの有無にかかわらず、対象範囲の要素C〜要素Gが復元される。
「順序固定型XML文書」を対象とするブロック型展開方法とブロック型復元方法の主な特徴は以下のとおりである。
1)ブロック型展開方法は、XML文書の要素について入れ子をなす部分木として特定し、特定した部分木について、部分木から作成したパスと要素識別用パスリストとを照合し要素番号を特定し対応する配置列を求め、第1子の子要素を親要素と同じ配置行に配置する。第2子以降の子要素を兄要素の最終配置行の次行に配置する。この展開方法によると、子孫要素の配置行がそろうことになり、子孫要素の定位置性が得られる。
2)ブロック型展開方法による等価テーブルは、パス情報に基づいて、入れ子をなすブロックとして展開される。親子要素の関係をブロックによる入れ子関係で確保し、また兄弟要素の出現順序をブロックの配置順序で確保している。
3)ブロック型復元方法は、入れ子をなすブロックから親子要素を特定し、ブロックの配置順序から兄弟要素を特定する過程で、XML文書を復元する。この復元方法によると、矩形領域、あるいは同一等価テーブルの複数のXML文書を対象として復元することができる。
XML文書の文書内容は、いずれの展開方法でも等価テーブルに配置され、表示装置106に表示される。このため、等価テーブルを用いてXML文書の文書内容を参照や編集などを容易に行うことができる。特に、XML文書の元となるデータが表形式データである場合、ブロック型展開方法で得られる等価テーブルは、元の表形式データに類似したデータ構造となる。このため、参照や編集などを効率的に行うことができる。
XML文書の文書内容について集計、分析あるいはグラフ化などの解析を行う際には、等価テーブル中のパス情報と配置データを解析材料とし、表計算ソフトウェアの各種機能を用いて、効率的に解析を行うことが可能である。なお、配置テーブルではすべて文字データとして取り扱っているため、数値データとして取り扱う場合には、文字データから数値データに変換する必要がある。
等価テーブルは、パス情報と配置データとを分離し配置している(図9参照)。等価テーブルの編集にあたっては、パス情報と配置データのそれぞれを別々に編集することが可能である。また、列の削除や移動などのようにパス情報と配置データとを同時に編集することも可能である。なお、復元する際には毎回パス情報を読み取っているため、パス情報を編集した場合でも、編集したパス情報が直ちに復元されるXML文書に反映される。
図29では、図19のタグ名"B"をタグ名"BB"に変更している。その結果、図31に示す復元されたXML文書のタグ名は、"BB"となる(図31の2行目など)。
図29では、図19の要素Dの削除(要素番号の削除)を行っている。その結果、図31に示す復元されたXML文書に要素Dは出現しない。
図29では、図19において同一階層の要素である要素Fと要素Gとを入れ替えている。その結果、図31に示す復元されたXML文書では、要素Gが要素Fの前に現れる(図31の7〜8行目など)。
図29では、図19の要素Hの階層値を2から3に変更している。その結果、要素Hのパスは"/A/H"から"/A/BB/H"となり、図31に示す復元されたXML文書では、要素Hは要素BBに含まれる(図31の16〜17行目)。
図29では、図19の要素Cの配置データ"c1"を"c1_c1"に変更している。その結果、図31に示す復元されたXML文書では、変更した配置データに対応する要素内容が"c1_c1"となる(図31の3行目)。
図29では、要素BBの7行目のノードマークを4行目へ移動している。その結果、移動前後では、要素BBの子孫要素に対して親子関係および述部を大きく変化させることになる。たとえば、要素Cについて、図21のB[1]/C[1]〜C[5]とB[2]/C[1]が、図30のBB[1]/C[1]〜C[3]とBB[2]/C[1]〜C[3]になる。
図29では、9行目と10行目の要素BBとその子孫要素を入れ替えている。その結果、図31に示す復元されたXML文書では、要素BBの子孫要素が入れ替わる(図31の35〜40行目と41〜43行目)。
ここでは、等価テーブルを用いた解析方法と編集方法について示した。編集方法の主な特徴は以下のとおりである。
1)XML文書の内容を視認性に富む表形式の等価テーブルに展開していることと、広く普及している表計算ソフトウェアを用いてことにより、等価テーブルを用いた解析や編集操作は、一般ユーザでも十分に可能である。
2)タグ名の変更、タグ名の追加または削除などパス情報の編集を行うことによって、簡易な構造変換を行うことができる。
(5.1)連結処理について
本願では、ある非終端要素に対して、その子孫要素をすべて連結した文字列を当該非終端要素の要素内容とみなすことによって、非終端要素を終端要素として取り扱う処理を、「連結処理」と呼ぶ。連結処理は、参照や編集などの対象となる部分が限られすべての要素を展開することが望ましくない部分を終端要素としてまとめる場合、あるいは部分的に「混合要素内容モデル」などの順序非固定となる要素を含むために「順序非固定型XML文書」に区分されるXML文書に対して、順序非固定となる要素を終端要素としてまとめることによって、「順序固定型XML文書」として取り扱うことができる。
パス情報のある要素のタグ名を削除(または要素番号の削除)した場合、ライン型展開方法またはブロック型展開方法は削除されたタグ名を把握することができない。ある非終端要素に含まれるすべての子孫要素が削除された場合、当該非終端要素は終端要素として識別されることになり、XML文書中に削除されたタグ名の子孫要素が出現しても、終端要素の要素内容として展開されることになる(図11のステップ1110、図18のステップ1805参照)。
連結処理の主な特徴は以下のとおりである。
1)参照や編集などの対象となる部分が限られており、すべての要素を展開することが望ましくない場合、展開不要部分の連結処理が有効となる。
2)「順序非固定型XML文書」の順序非固定部分を連結処理することにより、「順序固定型XML文書」として取り扱うことができる。
3)連結処理は、すべての要素を展開する場合と比べて、等価テーブルの領域が小さくなるとともに展開処理および復元処理の処理速度が向上する効果がある。
(6.1)XML文書の構造変換方法
異なる組織あるいはシステムでXML文書による情報交換を行う際には、共通するスキーマに基づいたXML文書である必要がある。また、十分に検討されたスキーマでも、内容の拡充や外的環境の変化などの要因によって、スキーマの更新がなされる。共通するスキーマあるいは更新されたスキーマに対応するためのXML文書の変更は、XML文書の構造変換に相当する。以下では、類似するスキーマに基づいたXML文書について、等価テーブルを用いて構造変換を行う方法について説明する。
1)双方向変換:XML文書AからXML文書Bへの変換、およびその逆方向の変換を行うような場合、双方向の変換となる。この場合、基本的には、文書に含まれる全要素が変換の対象となる。具体例を示すと、異なる組織間あるいはシステム間でのスキーマの相違およびスキーマの更新時に行われる構造変換が、これに該当する。
2)一方向変換:XML文書Aの部分的な要素を、1つまたは複数のXML文書Bに転送するような場合、一方向の変換となる。この場合、XML文書BからXML文書Aを復元することはできない。
図38は、文書例2(パス情報3501)の展開内容(図19参照)を、パス情報3502を持つ等価テーブルに変換して得られる等価テーブルを示す図である。図38の等価テーブルの復元結果は、文書例2のXML文書と同じ内容となる。当然のことながら、パス情報3501を持つ等価テーブルに存在していない要素(X、Y、Z)はパス情報3502を持つ等価テーブルにも存在しない。逆に、パス情報3502を持つ等価テーブルからパス情報3501を持つ等価テーブルに変換する際には、パス情報3502を持つ等価テーブルに要素(X、Y、Z)が存在する場合でも、これらの要素は伝達されず、構造変換後の等価テーブルから欠落することになる。
上述したパス情報とパス情報対応表を用いた構造変換の例は、異なるスキーマが複数存在する際に、あるスキーマに基づいたXML文書から異なるスキーマに基づいたXML文書への構造変換を、簡素化することができることを示す。ただし、完全な構造変換は期待できない。
ここで説明したパス情報とパス情報対応表を用いた構造変換方法の特徴は以下のとおりである。
1)ユーザはパス情報対応表を作成することによって、XML文書の構造変換を行うことができる。
2)1つのXML文書から関連する1つまたは複数のXML文書を作成することができる。
3)複数のXML文書が1つの等価テーブルに展開されている場合、複数のXML文書を取りまとめて1つのXML文書にすることも可能である。
(7.1)定形書式の非構造化文書のXML文書化について
一般に、XML文書を作成する際には、まず、XML文書の材料となる文書またはデータを収集する必要がある。次に、従来の方法では、XMLエディタや特定のスキーマに基づいたXML文書を作成することのできる専用プログラムを用いて、XML文書を作成することになる。この際、材料となる文書またはデータを入力領域にコピーアンドペーストを併用した入力作業を行い、XML文書を作成することになる。
(7.2.1)ワークシート上の文書・データの特徴
ワークシート上の文書やデータ(以下、「シート情報」と記す)は、組織や個人で独自に作成され、目的や要求に応じて改変されながら継続的に利用される。独自の構造をもつ場合でも、文書やデータはある一定の位置あるいは領域に配置される。以下では、シート情報のこのような性質を、文書やデータの配置に「定位置性がある」と表現する。
図41は、シート情報からXML文書へ変換時のデータの流れを示すが概念図である。まず、シート情報を含んでいるワークシートの未使用領域に、等価テーブルと同じ構造のテーブル(以下、「写像テーブル」と記す)を配置する。シート情報4101から写像テーブル4102への表計算ソフトウェアのリンク機能を用いた対応付け、写像テーブル4102から等価テーブル4103へ値の複写、さらに等価テーブル4103からXML文書4104へ変換する。
1)写像テーブル4102でノードとなる要素については、子孫要素が存在する際にノードマークを記入する。繰り返し要素が出現する際は、繰り返し回数を固定し配置行を求める。
2)シート情報4101の一部情報がXML文書4104で属性値として表現される場合、属性として文字列化する。属性が複数存在する場合、一定の順序で文字列の組み立てを行う。
3)XML文書4104で書式指定のある数値情報は、書式の変換を行った後に文字列化する。
1)繰り返し要素が出現する際は、繰り返し回数を固定した配置行に対応付けを行う。
2)XMLの仕様では複数の属性を含む場合、属性の順序を規定していない。したがって、属性名をもとに属性値を取り出し、対応付けする工夫が必要となる。
3)等価テーブル4103では文字列と数値を区別していないため、シート情報4101が数値情報である場合に数値化する。
(7.3.1)CSV形式データの特徴
CSV形式は、個々のプログラムで一定の順序で、データをカンマで区切って列記したデータ形式である。CSV形式ファイルでは、データの繰り返しや分岐を、次に示す一定の表現で制御する。1)データの繰り返し回数の記述、2)データの繰り返し終端を示すマークの挿入、3)データ内容の開始を示すマークによる分岐、4)データ内容を複数ファイルへの分散などである。
図42は、単一のCSV形式ファイル4201または複数のCSV形式ファイル群4202から、写像テーブル4205までのデータの流れを示す図である。表計算ソフトウェアのCSV形式ファイル読み込み機能を用いて、CSV形式ファイル4201またはCSV形式ファイル群4202のデータをCSV変換用ワークシート4203に読み取る。
定形書式の非構造化文書のXML文書化によって次の効果が得られる。
1)ユーザが使用している独自の構造と書式をもつワークシートにデータを入力し本来の処理を行うと同時に、XML文書を作成することができる。
2)XML文書の要素の確認、参照、印刷などの操作を、ユーザが使用している独自の構造をもつワークシートで行うことができる。
3)CSV形式ファイルを入出力データとして用いる従来のプログラムでも、等価テーブルを介してXML文書を取り扱うことができる。
(8.1)等価データと等価ファイルについて
XML文書を対象としてある処理を行うプログラム(以下、「応用プログラム」と記す)が、等価テーブルに展開された配置データを利用する際には、下記の2事項が問題となる。
等価データを作成する場合、まず、配置テーブルに対応する、要素番号、行番号および配置データを格納するための3つの1次元配列を用意する。処理対象範囲に基づいて配置テーブルの対象領域を決定し、列方向(横方向)または行方向(縦方向)のいずれかを優先して対象領域を走査し、配置データ(空でない配列要素)を検出し、その要素番号、行番号および配置データをそれぞれの1次元配列に格納する。
図6に示す文書例2、図45と図46に示す等価ファイルのファイルサイズは、Shift_JISコードとし、改行コードを改行と復帰の2バイトとする場合、文書例2が599バイト(字下げ分を含めない場合は409バイト)、図45に示す等価ファイルが584バイト、図46に示す等価ファイルが436バイトとなる。図45と図46に示すファイルサイズは、文書例2の字下げ分も含めたファイルサイズ(599バイト)よりはやや減少しているものの、文書例2の字下げ分を含めないファイルサイズ(409バイト)よりも増加している。したがって、圧縮の効果があるとは言えない。
等価ファイルの主な特徴について整理すると、以下のとおりである。
1)等価ファイルは、等価テーブルの内容をリスト化したファイルであり、XML文書と等価な内容を有するものの、非常に単純な構造のファイルとなる。
2)応用プログラムは、等価ファイルを入出力ファイルとすることによって、間接的にXML文書を取り扱うことができ、プログラムの簡素化や処理効率の改善につながる。
3)ハードウェア資源が乏しい処理装置でも、等価ファイルを用いることによって、XML文書を処理することが可能となる。
4)多くのXML文書で、等価ファイルのファイルサイズは、元のXML文書のファイルサイズよりも減少し、圧縮の効果が認められる。
102 RAM
103 ROM
104 外部記憶装置
105 入力装置
106 表示装置
107 通信制御装置
108 バス
900 ワークシート
901 入力領域
902 出力領域
903 作業領域
904 等価テーブル
905 スキーマ領域
906 処理対象範囲
907 配置領域(配置テーブル)
908 付加データ領域
1501〜1511 要素
2001〜2011 ブロック
3501〜3503 パス情報
3701 パス情報対応表
4101 シート情報
4102 写像テーブル
4103 等価テーブル
4104 XML文書
4201 CSV形式ファイル
4202 CSV形式ファイル群
4203 CSV変換用ワークシート
4204 シート情報
4205 写像テーブル
Claims (19)
- コンピュータのパス情報取得手段が、所定の記憶装置から処理対象とするXML文書を読み込み、XML文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形し、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層の深さを示す階層値とタグ名とに分離することにより、XML文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、
前記コンピュータのテーブル作成手段が、前記パス情報を列(行)見出しとするテーブルを作成するステップと、
前記コンピュータのデータ配置決定手段が、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別するステップと、
前記構文リストから行Lを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Iを特定するステップと、
前記行Lが開始タグを含む際に、前記要素番号Iの要素が終端要素となる場合、該要素の要素内容を配置データとし、前記要素番号Iの要素が終端要素とならない場合、所定のノードマークを配置データとするステップと、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップと、
前記要素番号Iが直前に配置した配置データの要素番号と比較して以下となる場合に、行(列)番号Jを1だけ増加するステップと、
前記コンピュータのデータ格納手段が、前記テーブルの前記行(列)番号Jおよび要素番号Iに対応する列(行)に、前記配置データを格納するステップと、
前記コンピュータのデータ保存手段が、所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするXML文書展開方法。 - コンピュータのパス情報取得手段が、所定の記憶装置から処理対象とするXML文書を読み込み、XML文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形し、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層の深さを示す階層値とタグ名とに分離することにより、該XML文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、
前記コンピュータのテーブル作成手段が、前記パス情報を列(行)見出しとするテーブルを作成するステップと、
前記コンピュータのデータ配置決定手段が、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別するステップと、
前記構文リストのルート要素の行範囲(L0,L1)、前記テーブルの展開開始行J0および要素番号IB=1を引数とし、XML文書を展開する要素分割処理を呼び出すステップと、
前記コンピュータのデータ保存手段が、所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするXML文書展開方法。 - 前記要素分割処理は、
引数である行範囲(L0,L1)から、最初に出現する開始タグTおよび該開始タグTに対応する終了タグを含む行Lを取得し、要素を特定するステップと、
前記特定した要素番号IBの親階層のパスとタグ名Tからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Iを特定するステップと、
前記テーブルから前記要素番号Iおよびその子孫要素の列(行)範囲で配置データが未配置である行(列)番号Jを前記展開開始行(列)J0から検索するステップと、
前記要素番号Iの要素が終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納するステップと、
前記要素番号Iの要素が非終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲(L0+1,L)、前記配置行(列)Jおよび要素番号I+1を引数とし、要素分割処理を呼び出すステップと、
前記行範囲(L0,L1)に未処理の行範囲が含まれる場合に、行範囲(L+1,L1)、前記展開開始行(列)J0および前記要素番号IBを引数とし、要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項2に記載のXML文書展開方法。 - 前記要素分割処理は、
引数である行範囲(L0,L1)から、最初に出現する開始タグTおよび当該開始タグTに対応する終了タグを含む行Lを取得し、要素を特定するステップと、
前記特定した要素番号IBの親階層のパスとタグ名Tからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Iを特定するステップと、
前記テーブルから前記要素番号Iとその子孫要素の列(行)範囲で配置データが未配置である行(列)番号Jを前記展開開始行(列)J0から検索するステップと、
前記要素番号Iの要素が終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納し、さらに、開始タグTと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Lを取得し、要素を特定するとともに、前記行(列)番号Jを1だけ増加し、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納することを繰り返すステップと、
前記要素番号Iの要素が非終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲(L0+1,L)、前記配置行(列)Jおよび要素番号I+1を引数とし、要素分割処理を呼び出すステップと、
前記行範囲(L0,L1)に未処理の行範囲が含まれる場合に、L0=L+1とし、要素分割処理の最初のステップに戻るステップと、
を含むことを特徴とする請求項2に記載のXML文書展開方法。 - コンピュータのテーブル読出手段が、所定の記憶装置から、請求項1に記載のXML文書展開方法によって展開されパス情報を見出しとするテーブルと、XML文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名(I)と、階層値(I)とを取得するステップと、
前記コンピュータのXML文書復元手段が、
前記テーブルの復元範囲を読み取り、前記復元範囲を列(行)方向に走査し、該テーブルに配置された配置データを検出し、列(行)番号から要素番号Iを特定するステップと、
前記要素番号Iに対応する階層値(I)が直前に検出した配置データの階層値より小さい場合に、前記階層値(I)までの終了タグおよび前記終了タグに付随する付加データを所定のスタック用配列から取り出し所定の書式で出力するステップと、
配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、前記配置データが所定のノードマークを含む場合に、開始タグ(I)および前記開始タグに付随する付加データを所定の書式で出力するとともに、終了タグ(I)および前記終了タグに付随する付加データを前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、前記配置データから要素内容を取り出し、開始タグ(I)、前記要素内容、終了タグ(I)および付加データを所定の書式で出力するステップと、
前記走査終了時に未出力の終了タグおよび前記終了タグに付随する付加データを前記スタック用配列から取り出し出力するステップと、
を含むことを特徴とするXML文書復元方法。 - コンピュータのテーブル読出手段が、所定の記憶装置から、請求項2ないし4いずれか一に記載のXML文書展開方法によって展開されパス情報を見出しとするテーブルと、XML文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名(I)と、階層値(I)とを取得するステップと、
前記コンピュータのXML文書復元手段が、
前記パス情報から、列(行)番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列(行)範囲の終端となる列(行)番号である終端番号を識別するステップと、
前記テーブルの復元範囲を読み取り、該復元範囲の行(列)範囲および列(行)範囲を対象ブロックとし、列(行)分割処理を呼び出すステップと、
を含むことを特徴とするXML文書復元方法。 - 前記列(行)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、前記開始列(行)番号I0から前記終端番号IEを特定するステップと、
前記テーブルの位置(J0,I0)に配置データが存在する場合に、行(列)範囲(J0,J1)および列(行)範囲(I0,IE)によって特定される範囲を新たな対象ブロックとし、行(列)分割処理を呼び出すステップと、
前記初期対象ブロックに未処理の列(行)範囲が存在する場合に、行(列)範囲(J0,J1)および列(行)範囲(IE+1,I1)によって特定される範囲を新たな対象ブロックとし、列(行)分割処理を呼び出すステップと、
を含むことを特徴とする請求項6に記載のXML文書復元方法。 - 前記行(列)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、開始行(列)番号JSをJ0、終端行(列)番号JEをJ0とするステップと、
開始列(行)番号I0に配置される配置データが終端要素である場合に、前記テーブルの位置(JE,I0)の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ(I0)、前記要素内容、終了タグ(I0)及び前記付加データ所定の書式で出力するステップと、
開始列(行)番号I0に配置される配置データが非終端要素となる場合に、前記開始列(行)番号I0の行(列)JS+1からJ1間でノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行(列)番号JEとし、前記ノードマークを含む配置データが出現しない場合は、行(列)番号J1を終端行(列)番号JEとし、
開始列(行)番号I0に配置される配置データが非終端要素となる場合に、前記テーブルの位置(JS,I0)の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ(I0)および前記開始タグに付随する前記付加データを所定の書式で出力するステップと、
行(列)範囲(JS,JE)および列(行)範囲(I0+1,I1)によって特定される範囲を新たな対象ブロックとし、列(行)分割処理を呼び出すステップと、
終了タグ(I0)および前記終了タグに付随する前記付加データを所定の書式で出力するステップと、
前記初期対象ブロックに未処理の行(列)範囲が存在し、かつ、テーブルの位置(JE+1,I0)に配置データが存在する場合に、行(列)範囲(JE+1,J1)および列(行)範囲(I0,I1)によって特定される範囲を新たな対象ブロックとして行(列)分割処理を呼び出すステップと、
を含むことを特徴とする請求項6または7に記載のXML文書復元方法。 - 前記列(行)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、開始列(行)番号ISをI0とするステップと、
前記開始列(行)番号ISから前記終端番号IEを特定するステップと、
前記テーブルの位置(J0,IS)に配置データが存在する場合に、行(列)範囲(J0,J1)および列(行)範囲(IS,IE)によって特定される範囲を新たな対象ブロックとし、行(列)分割処理を呼び出すステップと、
前記初期対象ブロックに未処理の列(行)範囲が存在する場合に、前記開始列(行)番号ISをIE+1とし、前記開始列(行)番号ISから前記終端番号IEを特定するステップに戻るステップと、
を含むことを特徴とする請求項6に記載のXML文書復元方法。 - 前記行(列)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、開始行(列)番号JSをJ0、終端行(列)番号JEをJ0とするステップと、
開始列(行)番号I0に配置される配置データが終端要素となる場合に、前記開始列(行)番号I0の行(列)JSからJ1の間で配置データを検索し、配置データが存在する場合に、前記配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ(I0)、前記要素内容、終了タグ(I0)及び前記付加データ所定の書式で出力することを、繰り返すステップと、
開始列(行)番号I0に配置される配置データが非終端要素となる場合に、前記開始列(行)番号I0の行(列)JS+1からJ1間で所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行(列)番号JEとし、前記ノードマークを含む配置データが出現しない場合は、行(列)番号J1を終端行(列)番号JEとし、
開始列(行)番号I0に配置される配置データが非終端要素となる場合に、前記テーブルの位置(JS,I0)の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ(I0)および前記開始タグに付随する前記付加データを所定の書式で出力するステップと、
行(列)範囲(JS,JE)および列(行)範囲(I0+1,I1)によって特定される範囲を新たな対象ブロックとし、列(行)分割処理を呼び出すステップと、
終了タグ(I0)および前記終了タグに付随する前記付加データを所定の書式で出力するステップと、
前記初期対象ブロックに未処理の行(列)範囲が存在する場合に、前記行(列)番号JE+1を新たな開始行(列)番号JSとし、行(列)範囲(JS,J1)を対象とした出力を、繰り返すステップと、
を含むことを特徴とする請求項6または9に記載のXML文書復元方法。 - XML文書に含まれる要素の入れ子関係を示すパス情報と、請求項1ないし4いずれか一に記載のXML文書展開方法で展開したテーブルと、から、XML文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータのパス情報出力手段が、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータの配置データ出力手段が、前記テーブルを列方向または行方向のいずれか1方向を優先して走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列(行)番号に対応する要素番号、該配置データの行(列)番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。 - XML文書に含まれる要素の入れ子関係を示すパス情報と、請求項1に記載のXML文書展開方法で展開したテーブルとから、XML文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータのパス情報出力手段が、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータの配置データ出力手段が、前記テーブルを列(行)方向に走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列(行)番号に対応する要素番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。 - 所定の記憶装置から処理対象とするXML文書を読み込み、該XML文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形する構文リスト整形手段、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離するパス情報取得手段、
前記パス情報を列(行)見出しとするテーブルを作成するテーブル作成手段、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別する処理と、
前記構文リストから行Lを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Iを特定する処理と、
前記行Lが開始タグを含む際に、前記要素番号Iの要素が終端要素となる場合、該要素の要素内容を配置データとし、前記要素番号Iの要素が終端要素とならない場合、所定のノードマークを配置データとする処理と、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加する処理と、
前記要素番号Iが直前に配置した配置データの要素番号と比較して以下となる場合に、行(列)番号Jを1だけ増加する処理と、
前記テーブルの前記行(列)番号Jおよび要素番号Iに対応する列(行)に、前記配置データを格納する処理と、の前記各処理を繰り返し行うデータ格納手段、及び、
所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するデータ保存手段として、コンピュータを機能させるためのXML文書展開プログラム。 - 所定の記憶装置から処理対象とするXML文書を読み込み、該XML文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形する構文リスト整形手段、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離するパス情報取得手段、
前記パス情報を列(行)見出しとするテーブルを作成するテーブル作成手順、
前記パス情報から、前記要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別する手段と、
前記構文リストのルート要素の行範囲(L0,L1)、前記テーブルの展開開始行J0および要素番号IB=1を引数とし、XML文書を展開する要素分割処理を呼び出す要素分割処理手段、及び、
所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するデータ保存手段として、コンピュータを機能させるためのXML文書展開プログラム。 - 前記要素分割処理手段は、
引数である行範囲(L0,L1)から、最初に出現する開始タグTおよび当該開始タグTに対応する終了タグを含む行Lを取得し、要素を特定する処理と、
前記特定した要素番号IBの親階層のパスとタグ名Tからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Iを特定する処理と、
前記テーブルから前記要素番号Iおよびその子孫要素の列(行)範囲で配置データが未配置である行(列)番号Jを前記展開開始行(列)J0から検索する処理と、
前記要素番号Iの要素が終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、前記要素の要素内容を配置データとして格納し、さらに、開始タグTと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Lを取得し、要素を特定するとともに、前記行(列)番号Jを1だけ増加し、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納することを繰り返す処理と、
前記要素番号Iの要素が非終端要素となる場合に、前記テーブルの前記行(列)番号Jおよび前記要素番号Iに対応する列(行)に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲(L0+1,L)、前記配置行(列)Jおよび要素番号I+1を引数とし、要素分割処理を呼び出す処理と、
前記行範囲(L0,L1)に未処理の行範囲が含まれる場合に、L0=L+1とし、要素分割処理の最初のステップに戻る処理と、を行う請求項14に記載のXML文書展開プログラム。 - 所定の記憶装置から、請求項13に記載のXML文書展開プログラムによって展開されパス情報を見出しとするテーブルと、XML文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名(I)と、階層値(I)とを取得する処理と、
前記テーブルの復元範囲を読み取り、前記復元範囲を列(行)方向に走査し、該テーブルに配置された配置データを検出し、列(行)番号から要素番号Iを特定する処理と、を実行するテーブル読出手段、
前記要素番号Iに対応する階層値(I)が直前に検出した配置データの階層値より小さい場合に、前記階層値(I)までの終了タグを所定のスタック用配列から取り出し出力する処理と、
前記配置データが所定のノードマークを含む場合に、開始タグ(I)を出力するとともに、終了タグ(I)を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ(I)、前記配置データおよび終了タグ(I)を連結して出力する処理と、
前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力する処理と、を実行する出力手段、及び、
前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元する付加データ復元手段として、コンピュータを機能させるためのXML文書復元プログラム。 - 所定の記憶装置から、請求項14または15に記載のXML文書展開プログラムによって展開されパス情報を見出しとするテーブルと、XML文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名(I)と、階層値(I)とを取得する処理と、
前記テーブルの復元範囲を読み取り、前記復元範囲を列(行)方向に走査し、該テーブルに配置された配置データを検出し、列(行)番号から要素番号Iを特定する処理と、を実行するテーブル読出手段、及び、
前記パス情報から、列(行)番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列(行)範囲の終端となる列(行)番号である終端番号を識別する処理と、
前記テーブルの復元範囲を読み取り、該復元範囲の行(列)範囲および列(行)範囲を対象ブロックとし、列(行)分割処理または行(列)分割処理を呼び出す処理と、を実行する出力手段として、コンピュータを機能させるためのXML文書復元プログラム。 - 前記列(行)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、開始列(行)番号ISをI0とする処理と、
前記開始列(行)番号ISから前記終端番号IEを特定する処理と、
前記テーブルの位置(J0,IS)に配置データが存在する場合に、行(列)範囲(J0,J1)および列(行)範囲(IS,IE)によって特定される範囲を新たな対象ブロックとし、行(列)分割処理を呼び出す処理と、
前記初期対象ブロックに未処理の列(行)範囲が存在する場合に、前記開始列(行)番号ISをIE+1とし、前記開始列(行)番号ISから前記終端番号IEを特定する処理に戻る処理と、を行う請求項17に記載のXML文書復元プログラム。 - 前記行(列)分割処理は、
行(列)範囲(J0,J1)および列(行)範囲(I0,I1)によって特定される範囲を初期対象ブロックとし、開始行(列)番号JSをJ0、終端行(列)番号JEをJ0とする処理と、
開始列(行)番号I0に配置される配置データが終端要素となる場合に、行(列)番号J0からJ1までの配置データを検索し、配置データが存在する場合に、開始タグ(I0)、前記配置データおよび終了タグ(I0)を連結して出力することを、繰り返す処理と、
開始列(行)番号I0に配置される配置データが非終端要素となる場合に、前記開始列(行)番号I0の行(列)JS+1からJ1間で所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行(列)番号JEとし、前記ノードマークを含む配置データが出現しない場合は、行(列)番号J1を終端行(列)番号JEとし、開始タグ(I0)を出力し、行(列)範囲(JS,JE)および列(行)範囲(I0+1,I1)によって特定される範囲を新たな対象ブロックとし、列(行)分割処理を呼び出し、終了タグ(I0)を出力する処理と、
前記初期対象ブロックに未処理の行(列)範囲が存在する場合に、前記行(列)番号JE+1を新たな開始行(列)番号JSとし、行(列)範囲(JS,J1)を対象とした出力を、繰り返す処理と、を行う請求項17または18に記載のXML文書復元プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006352851A JP4086253B1 (ja) | 2006-12-27 | 2006-12-27 | Xml文書の処理方法および処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006352851A JP4086253B1 (ja) | 2006-12-27 | 2006-12-27 | Xml文書の処理方法および処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4086253B1 true JP4086253B1 (ja) | 2008-05-14 |
JP2008165403A JP2008165403A (ja) | 2008-07-17 |
Family
ID=39445757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006352851A Expired - Fee Related JP4086253B1 (ja) | 2006-12-27 | 2006-12-27 | Xml文書の処理方法および処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4086253B1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955714A (zh) * | 2019-12-03 | 2020-04-03 | 中国银行股份有限公司 | 一种将非结构化文本转化为结构化文本的方法及装置 |
CN112506942A (zh) * | 2020-10-29 | 2021-03-16 | 望海康信(北京)科技股份公司 | 数据组合查询方法、系统及相应设备和存储介质 |
CN115130443A (zh) * | 2022-06-28 | 2022-09-30 | 飞鸟鱼信息科技有限公司 | 表格数据处理方法、装置、电子设备及存储介质 |
CN117829130A (zh) * | 2024-03-06 | 2024-04-05 | 湖南亚信安慧科技有限公司 | Json字符串解析方法、装置、设备及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5165998B2 (ja) * | 2007-11-14 | 2013-03-21 | 日本電信電話株式会社 | コンテンツ診断装置,コンテンツ診断プログラム |
JP5412905B2 (ja) * | 2009-03-18 | 2014-02-12 | 日本電気株式会社 | ライフサイクル情報処理装置、ライフサイクル情報処理方法及びライフサイクル情報処理プログラム |
KR101769528B1 (ko) * | 2016-02-26 | 2017-08-18 | 세연아이넷(주) | 다양한 정보화를 위한 전자화 문서분류 및 규격화 방법 |
-
2006
- 2006-12-27 JP JP2006352851A patent/JP4086253B1/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955714A (zh) * | 2019-12-03 | 2020-04-03 | 中国银行股份有限公司 | 一种将非结构化文本转化为结构化文本的方法及装置 |
CN110955714B (zh) * | 2019-12-03 | 2023-05-02 | 中国银行股份有限公司 | 一种将非结构化文本转化为结构化文本的方法及装置 |
CN112506942A (zh) * | 2020-10-29 | 2021-03-16 | 望海康信(北京)科技股份公司 | 数据组合查询方法、系统及相应设备和存储介质 |
CN115130443A (zh) * | 2022-06-28 | 2022-09-30 | 飞鸟鱼信息科技有限公司 | 表格数据处理方法、装置、电子设备及存储介质 |
CN117829130A (zh) * | 2024-03-06 | 2024-04-05 | 湖南亚信安慧科技有限公司 | Json字符串解析方法、装置、设备及存储介质 |
CN117829130B (zh) * | 2024-03-06 | 2024-05-17 | 湖南亚信安慧科技有限公司 | Json字符串解析方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2008165403A (ja) | 2008-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7069501B2 (en) | Structured document processing system and structured document processing method | |
JP4086253B1 (ja) | Xml文書の処理方法および処理プログラム | |
US20090210780A1 (en) | Document processing and management approach to creating a new document in a mark up language environment using new fragment and new scheme | |
US7143344B2 (en) | Transformation stylesheet editor | |
US20170357631A1 (en) | Analysis of documents using rules | |
US6931590B2 (en) | Method and system for managing documents | |
JP4091726B2 (ja) | 構造化文書の表示規則の生成方法、システムおよびプログラムが記録された媒体ならびに構造化文書およびその文書型定義の変更方法、システムおよびプログラムが記録された媒体 | |
US20040221233A1 (en) | Systems and methods for report design and generation | |
US20100088676A1 (en) | Comparing and merging structured documents syntactically and semantically | |
US8397157B2 (en) | Context-free grammar | |
US20080134019A1 (en) | Processing Data And Documents That Use A Markup Language | |
EP1821219A1 (en) | Document processing device and document processing method | |
CN110347390B (zh) | 一种快速生成web页面的方法、存储介质、设备及系统 | |
US20070283246A1 (en) | Processing Documents In Multiple Markup Representations | |
CN113608903A (zh) | 一种基于xml语言的故障管理方法 | |
US20070214170A1 (en) | Parallel data transformation | |
CA2422490C (en) | Method and apparatus for extracting structured data from html pages | |
EP1933233A1 (en) | Data processing apparatus | |
Simic et al. | Prospects of encoding Java source code in XML | |
WO2005098666A1 (en) | Processing data and documents that use a markup language | |
WO2005098664A1 (en) | Processing documents in multiple markup representations | |
KR20140065389A (ko) | 모듈의 구조 해석을 지원하는 장치 및 프로그램 | |
CN116956836A (zh) | 一种基于哈希树算法实现的文档文件高效自动化注释方法 | |
JP2006163820A (ja) | データ変換装置 | |
JPH09231220A (ja) | 論理構造を用いた文書変換生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140228 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |