(57)【要約】      （修正有）【課題】ＸＭＬ文書の文書内容の把握・参照、ＸＭＬ文書の作成・編集を容易にし、ＸＭＬ文書の構造変換、非構造化文書のＸＭＬ文書化、および等価ファイルの作成を行う。【解決手段】対象とするＸＭＬ文書から取得したパス情報を表見出しとし、ＸＭＬ文書の文書内容を等価テーブルに展開する。ブロック型展開方法は、要素による入れ子をブロックによる入れ子として展開する。展開方法に対応した復元方法によって、等価テーブルからＸＭＬ文書を復元する。ブロック型展開方法・ブロック型復元方法の定位置性を利用して、ＸＭＬ文書の構造変換、非構造化文書のＸＭＬ文書化を行う。また、配置テーブルから配置データを検出し、１次元配列に整理し、パス情報を含めて等価ファイルを作成する。ＸＭＬ文書の文書内容の把握・参照、ＸＭＬ文書の作成・編集を容易にし、ＸＭＬ文書の構造変換、非構造化文書のＸＭＬ文書化、および等価ファイルの作成を行う。【選択図】図２０
2008165403.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、処理対象とするＸＭＬ文書から、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、パス情報を取得するステップと、
前記コンピュータが、前記ＸＭＬ文書に含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップと、
前記コンピュータが、前記パス情報、前記テーブルに配置データを展開した処理対象範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするＸＭＬ文書展開方法。
【請求項２】
前記パス情報を取得するステップは、
前記コンピュータが、前記ＸＭＬ文書を開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位とする構文リストに整形するステップと、
前記コンピュータが、前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加するステップと、
前記コンピュータが、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層値とタグ名に分離するステップと、
を含むことを特徴とする請求項１に記載のＸＭＬ文書展開方法。
【請求項３】
前記パス情報を取得するステップは、
前記コンピュータが、パス情報の順序について、前記構文リストを再走査することによって検証するステップと、
パス情報の順序について逆転部分が含まれる場合に、前記コンピュータが、前記逆転部分の入れ替え処理を繰り返し行うステップと、
を、さらに、含むことを特徴とする請求項２に記載のＸＭＬ文書展開方法。
【請求項４】
前記パス情報を取得するステップは、
前記コンピュータが、処理対象とするＸＭＬ文書から、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、パス情報を取得することに代えて、
前記コンピュータが、所定の記憶装置から、前記ＸＭＬ文書のスキーマに対応した解析済みパス情報を取得するステップを、
含むことを特徴とする請求項１ないし３いずれか一に記載のＸＭＬ文書展開方法。
【請求項５】
前記解析済みパス情報を取得するステップは、
前記コンピュータが、ＸＭＬ文書の文書構造を規定するスキーマから入れ子関係となる要素から階層値とタグ名を特定し、取得するステップを、
含むことを特徴とする請求項４に記載のＸＭＬ文書展開方法。
【請求項６】
前記解析済みパス情報を取得するステップは、
前記コンピュータが、ユーザの指示に従って、解析済みパス情報を更新するステップを、
含むこと特徴とする請求項４に記載のＸＭＬ文書展開方法。
【請求項７】
前記パス情報を取得するステップは、
前記コンピュータが、処理対象とするＸＭＬ文書から、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、パス情報を取得することに代えて、
前記コンピュータが、所定の記憶装置から、既に取得しているパス情報を読み出すステップを、
含むことを特徴とする請求項１ないし６いずれか一に記載のＸＭＬ文書展開方法。
【請求項８】
前記コンピュータが、前記ＸＭＬ文書に含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップとして、
前記コンピュータが、前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別するステップと、
前記コンピュータが、開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記行Ｌが開始タグを含む際に、前記コンピュータが、前記要素番号Ｉの要素が終端要素となる場合、または前記行Ｌ中に該開始タグに対応する終了タグを含む場合に、前記開始タグから前記開始タグに対応する終了タグまでを要素として特定し、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、かつ前記行Ｌ中に該開始タグに対応する終了タグを含まない場合に、所定のノードマークを配置データとするステップと、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、前記コンピュータが、行（列）番号Ｊをインクリメントするステップと、
前記コンピュータが、前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納するステップと、
を含むことを特徴とする請求項１ないし７いずれか一に記載のＸＭＬ文書展開方法。
【請求項９】
前記コンピュータが、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップを、
含むことを特徴とする請求項８に記載のＸＭＬ文書展開方法。
【請求項１０】
前記コンピュータが、前記ＸＭＬ文書に含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップとして、
前記コンピュータが、前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別するステップと、
前記コンピュータが、開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、展開開始行Ｊ０および要素番号ＩＢを引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項１ないし７いずれか一に記載のＸＭＬ文書展開方法。
【請求項１１】
前記要素分割処理は、
前記コンピュータが、引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記コンピュータが、前記要素番号ＩＢの階層値とタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記コンピュータが、前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記コンピュータが、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納するステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記コンピュータが、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、前記コンピュータが、行範囲（Ｌ＋１，Ｌ１）、前記展開開始行（列）Ｊ０および前記要素番号ＩＢを引数とし、要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項１０に記載のＸＭＬ文書展開方法。
【請求項１２】
前記要素分割処理は、
前記コンピュータが、引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記コンピュータが、前記要素番号ＩＢの階層値とタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記コンピュータが、前記テーブルから前記要素番号Ｉとその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記コンピュータが、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、該開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊをインクリメントし、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納することを繰り返すステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記コンピュータが、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、前記コンピュータが、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻るステップと、
を含むことを特徴とする請求項１０に記載のＸＭＬ文書展開方法。
【請求項１３】
前記コンピュータが、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップを、
含むことを特徴とする請求項１０ないし１２いずれか一に記載のＸＭＬ文書展開方法。
【請求項１４】
前記コンピュータが、前記配置データに付加データが付加されている場合に、付加データを分離し、前記配置データの列（行）番号に対応する要素番号、行（列）番号および分離した付加データを関連付けて所定の付加データ用リストに格納するステップを、
含むことを特徴とする請求項９または１３に記載のＸＭＬ文書展開方法。
【請求項１５】
前記コンピュータが、複数の同一文書構造のＸＭＬ文書を、共通するパス情報を用いて、ｎ番目のＸＭＬ文書の展開終了行（列）をＮとし、ｎ＋１番目のＸＭＬ文書の展開開始行（列）をＮ＋１とし、単一のテーブルに展開すること、
を特徴とする請求項１ないし１４いずれか一に記載のＸＭＬ文書展開方法。
【請求項１６】
前記コンピュータが、ユーザより、前記パス情報の更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１ないし１５いずれか一に記載のＸＭＬ文書展開方法。
【請求項１７】
コンピュータが、所定のテーブルからＸＭＬ文書を復元する際に用いるタグ名とその階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出すステップと、
前記コンピュータが、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップと、
を含むことを特徴とするＸＭＬ文書復元方法。
【請求項１８】
前記コンピュータが、所定の付加データ用リストから、要素番号Ｉ、行（列）番号Ｊおよび付加データを読み出し、前記テーブルの要素番号Ｉ、行（列）番号Ｊに配置される配置データに、前記付加データを、所定の書式で付加するステップを、
含むことを特徴とする請求項１７に記載のＸＭＬ文書復元方法。
【請求項１９】
前記コンピュータが、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップとして、
前記コンピュータが、前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定するステップと、
前記要素番号Ｉの階層値Ｋが直前に検出した配置データの階層値より小さい場合に、前記コンピュータが、前記階層値Ｋまでの終了タグを所定のスタック用配列から取り出し出力するステップと、
前記コンピュータが、前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）を出力するとともに、終了タグ（Ｉ）を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ（Ｉ）、前記配置データおよび終了タグ（Ｉ）を連結して出力するステップと、
前記コンピュータが、前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力するステップと、
を含むことを特徴とする請求項１７または１８に記載のＸＭＬ文書復元方法。
【請求項２０】
前記コンピュータが、前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元するステップを、
さらに、含むことを特徴とする請求項１９に記載のＸＭＬ文書復元方法。
【請求項２１】
前記コンピュータが、前記付加データのうち、終了タグ後タグ間文字データと終了タグ後コメント系データについては、所定のスタック用配列に積むステップと、
前記コンピュータが、階層値Ｋまでの終了タグを取り出し出力する際に、前記スタック用配列から、前記階層値Ｋまでの終了タグ後タグ間文字データと終了タグ後コメント系データを取り出し、出力することにより、前記付加データを復元するステップと、
を含むことを特徴とする請求項２０に記載のＸＭＬ文書復元方法。
【請求項２２】
前記コンピュータが、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップとして、
前記コンピュータが、前記パス情報から、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端番号を識別するステップと、
前記コンピュータが、前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックし、列（行）分割処理または行（列）分割処理を呼び出すステップと、
を含むことを特徴とする請求項１７または１８に記載のＸＭＬ文書復元方法。
【請求項２３】
前記列（行）分割処理は、
前記コンピュータが、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、前記開始列（行）番号Ｉ０から終端番号ＩＥを特定するステップと、
前記コンピュータが、前記テーブルの位置（Ｊ０，Ｉ０）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記コンピュータが、前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＥ＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２４】
前記行（列）分割処理は、
前記コンピュータが、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記コンピュータが、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力するステップと、
前記初期対象ブロックに未処理の行（列）範囲が存在し、かつ、テーブルの位置（ＪＥ＋１，Ｉ０）に配置データが存在する場合に、前記コンピュータが、行（列）範囲（ＪＥ＋１，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を新たな対象ブロックとして行（列）分割処理を呼び出すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２５】
前記列（行）分割処理は、
前記コンピュータが、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とするステップと、
前記コンピュータが、前記開始列（行）番号ＩＳから終端番号ＩＥを特定するステップと、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、前記コンピュータが、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記対象ブロックに未処理の列（行）範囲が存在する場合に、前記コンピュータが、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定するステップに戻るステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２６】
前記行（列）分割処理は、
前記コンピュータが、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、前記コンピュータが、行（列）番号Ｊ０からＪ１までの配置データを検索し、配置データが存在する場合に、開始タグ（Ｉ０）、前記配置データおよび終了タグ（Ｉ０）を連結して出力することを、繰り返すステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記コンピュータが、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力し、さらに、前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２７】
前記コンピュータが、前記テーブル中に所定の様式で付加された付加データから、属性およびコメント系データをそれぞれ復元するステップを、
さらに、含むことを特徴とする請求項２２ないし２６いずれか一に記載のＸＭＬ文書復元方法。
【請求項２８】
前記コンピュータが、ユーザから前記復元範囲の指定を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２７いずれか一に記載のＸＭＬ文書復元方法。
【請求項２９】
前記コンピュータが、ユーザより、前記パス情報の更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２８いずれか一に記載のＸＭＬ文書復元方法。
【請求項３０】
前記コンピュータが、ユーザより、前記テーブルの更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２９いずれか一に記載のＸＭＬ文書復元方法。
【請求項３１】
コンピュータが、対象とするＸＭＬ文書を、開始タグ、空要素タグ、終了タグまたは開始タグおよび終了タグの組み合わせを読み出し単位とする構文リストに整形するステップと、
前記コンピュータが、前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加するステップと、
前記コンピュータが、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列するステップと、
を含むことを特徴とするパス情報作成方法。
【請求項３２】
前記コンピュータが、パス情報の順序について、前記構文リストを再走査することによって検証するステップと、
パス情報の順序について逆転部分が含まれる場合に、前記コンピュータが、前記逆転部分の入れ替え処理を繰り返し行うステップと、
を、さらに、含むことを特徴とする請求項３１に記載のパス情報作成方法。
【請求項３３】
請求項１ないし１６いずれか一に記載のＸＭＬ文書展開方法で展開したテーブルと、展開に使用したパス情報から述部付きのパスを作成するパス作成方法であって、
コンピュータが、要素番号別の要素カウンタの配列および階層値別の階層値別パスの配列を設定するステップと、
前記コンピュータが、前記テーブルを走査し、配置データの存在により要素の出現を検出した場合に、該要素の前記要素カウンタをインクリメントさせるとともに、該要素が子孫要素を伴う場合は前記子孫要素の要素カウンタをすべて０に設定するステップと、
前記コンピュータが、前記要素のタグ名および前記要素カウンタの値から作成した述部付きロケーションステップを、前記階層値別パスに格納するステップと、
階層値１から前記要素の階層値までの前記階層値別パスに格納された述部付きロケーションステップを連結しパスを作成するステップと、
を含むことを特徴とするパス作成方法。
【請求項３４】
コンピュータが、変換前のＸＭＬ文書に含まれる要素の入れ子関係を示す変換前パス情報を用いて、請求項１０ないし１６いずれか一に記載のＸＭＬ文書展開方法により、ＸＭＬ文書を、変換元テーブルに展開し、
前記コンピュータが、前記変換元パス情報と、変換後のＸＭＬ文書に含まれる要素の入れ子関係を示した変換後パス情報の対応関係を定めたパス情報対応表を用いて、前記変換元テーブルを、変換先テーブルに書き換え、
前記コンピュータが、前記変換後パス情報を用いて、請求項２２ないし３０いずれか一に記載のＸＭＬ文書復元方法により、前記変換先テーブルを、ＸＭＬ文書に復元することにより、ＸＭＬ文書の構造変換を実行するＸＭＬ文書構造変換方法。
【請求項３５】
ＸＭＬ文書に含まれる要素の入れ子関係を示すパス情報と、請求項１ないし１６いずれか一に記載のＸＭＬ文書展開方法で展開したテーブルとから、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータが、前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータが、前記テーブルを列方向または行方向のいずれか１方向を優先して走査し、該テーブルに配置された配置データを検出した場合に、該配置データの列（行）番号に対応する要素番号、該配置データの行（列）番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項３６】
ＸＭＬ文書に含まれる要素の入れ子関係を示すパス情報と、請求項８または９に記載のＸＭＬ文書展開方法で展開したテーブルとから、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータが、前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータが、前記テーブルを列（行）方向に走査し、該テーブルに配置された配置データを検出した場合に、該配置データの列（行）番号に対応する要素番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項３７】
ＸＭＬ文書に含まれる各要素をテーブルに展開し、または、該テーブルからＸＭＬ文書を復元するためのデータ構造であって、
前記テーブルの列（行）が、前記ＸＭＬ文書のタグ名と階層値とからなるパス情報から決定された要素番号に対応すること、
前記要素が非終端要素である場合は所定のノードマークが、前記要素が終端要素である場合は該終端要素の要素内容が、それぞれ前記テーブルに配置されていること、および、
前記テーブルの配置開始列（行）から配置終了列（行）までの走査を配置開始行（列）から配置終了行（列）まで繰り返すことによって、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項３８】
ＸＭＬ文書に含まれる各要素をテーブルに展開し、または、該テーブルからＸＭＬ文書を復元するためのデータ構造であって、
前記テーブルの列（行）が、前記ＸＭＬ文書のタグ名と階層値とからなるパス情報から決定された要素番号に対応すること、
前記要素が非終端要素である場合は所定のノードマークが、前記要素が終端要素である場合は該終端要素の要素内容が、それぞれ前記テーブルに配置されていること、
前記非終端要素の配置列（行）から子孫要素が展開されうる配置列（行）までの列（行）範囲と、前記非終端要素の配置行（列）から子孫要素が展開されている配置行（列）までの行（列）範囲と、により区画される範囲をブロックとして特定できること、
前記非終端要素の第１子要素は、前記所定のノードマークの配置行（列）と同じ行（列）から配置されていること、および、
ＸＭＬ文書の要素による入れ子構造が、前記ブロックによる入れ子構造に対応し、親子関係となるブロックまたは兄弟関係となるブロックを特定することによって、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項３９】
請求項３７または３８に記載のテーブルをリスト化したデータ構造であって、
前記テーブルに配置されている配置データについて、該配置データの列（行）番号に対応する要素番号、該配置データの行（列）番号および該配置データを関連付けたリストであり、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項４０】
請求項３７に記載のテーブルをリスト化したデータ構造であって、
前記テーブルに配置されている配置データについて、要素の出現順序に従って、該配置データの列（行）番号に対応する要素番号および該配置データを関連付けたリストであり、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項４１】
処理対象とするＸＭＬ文書を開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位とする構文リストに整形する処理と、
前記構文リストから、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理し、パス情報を取得する処理と、
前記構文リストに含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理と、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加する処理と、
前記パス情報、前記テーブルに配置データを展開した処理対象範囲および前記テーブルを関連付けて保存する処理と、
をコンピュータに実行させるためのＸＭＬ文書展開プログラム。
【請求項４２】
前記構文リストに含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理として、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別する処理と、
開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記行Ｌが開始タグを含む際に、前記要素番号Ｉの要素が終端要素となる場合、または前記行Ｌ中に該開始タグに対応する終了タグを含む場合に、前記開始タグから前記開始タグに対応する終了タグまでを要素として特定し、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、かつ前記行Ｌ中に該開始タグに対応する終了タグを含まない場合に、所定のノードマークを配置データとする処理と、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、行（列）番号Ｊをインクリメントする処理と、
前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納する処理と、
をコンピュータに実行させるための請求項４１に記載のＸＭＬ文書展開プログラム。
【請求項４３】
前記構文リストに含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理として、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別する処理と、
開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、展開開始行Ｊ０および要素番号ＩＢを引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出す処理と、
をコンピュータに実行させるための請求項４１に記載のＸＭＬ文書展開プログラム。
【請求項４４】
前記要素分割処理は、
引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定する処理と、
前記要素番号ＩＢの階層値とタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索する処理と、
前記要素番号Ｉの要素が終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、該開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊをインクリメントし、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納することを繰り返す処理と、
前記要素番号Ｉの要素が非終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出す処理と、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻る処理と、
をコンピュータに実行させるための請求項４３に記載のＸＭＬ文書展開プログラム。
【請求項４５】
所定のテーブルからＸＭＬ文書を復元する際に用いるタグ名とその階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出す処理と、
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理と、
前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元する処理と、
をコンピュータに実行させるためのＸＭＬ文書復元プログラム。
【請求項４６】
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理として、
前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定する処理と、
前記要素番号Ｉに対応する階層値Ｋが直前に検出した配置データの階層値より小さい場合に、前記階層値Ｋまでの終了タグを所定のスタック用配列から取り出し出力する処理と、
前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）を出力するとともに、終了タグ（Ｉ）を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ（Ｉ）、前記配置データおよび終了タグ（Ｉ）を連結して出力する処理と、
前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力する処理と、
をコンピュータに実行させるための請求項４５に記載のＸＭＬ文書復元プログラム。
【請求項４７】
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理として、
前記パス情報から、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端番号を識別する処理と、
前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックし、列（行）分割処理または行（列）分割処理を呼び出す処理と、
をコンピュータに実行させるための請求項４５に記載のＸＭＬ文書復元プログラム。
【請求項４８】
前記列（行）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とする処理と、
前記開始列（行）番号ＩＳから終端番号ＩＥを特定する処理と、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出す処理と、
前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定する処理に戻る処理と、
を含むことを特徴とする請求項４７に記載のＸＭＬ文書復元方法。
【請求項４９】
前記行（列）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とする処理と、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、行（列）番号Ｊ０からＪ１までの配置データを検索し、配置データが存在する場合に、開始タグ（Ｉ０）、前記配置データおよび終了タグ（Ｉ０）を連結して出力することを、繰り返す処理と、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力し、さらに、前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返す処理と、
を含むことを特徴とする請求項４７に記載のＸＭＬ文書復元プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ文書の処理方法および処理プログラムに関する。特に、ＸＭＬ文書を等価テーブルに展開する方法、等価テーブルからＸＭＬ文書を復元する方法、ＸＭＬ文書の構造変換、非構造化文書のＸＭＬ文書化、および等価ファイルの作成を行うための方法に関するものである。
【背景技術】
【０００２】
構造化文書は、論理構造をもつ文書や木構造データを表現し、またコンピュータで取り扱うために、タグによってマークアップされた文書である。タグは、要素内容を説明するとともに、要素の入れ子関係を明確にする。主な構造化文書として、１９８６年にＩＳＯ（International Standard Organization）で規格化されたＳＧＭＬ（Standard Generalized Markup Language）と、１９９８年にＷ３Ｃ（World Wide Web Consortium）で規格化されたＸＭＬ（Extensible Markup Language）とがある。インターネットの普及に伴って事実上標準となったＨＴＭＬ（HyperText Markup Language）は、ＳＧＭＬの応用言語である。
【０００３】
ＸＭＬは、ＳＧＭＬを簡素化した規格であり、特徴的な相違点は次のとおりである。
１）ＳＧＭＬの仕様では、省略タグ機構あるいは短縮タグ機構を、ＳＧＭＬ宣言および文書型定義ＤＴＤ（Document Type Definition）で定義する。しかし、ＸＭＬの仕様では、これらの機構を削除している。
２）ＳＧＭＬの仕様では、省略タグ機構あるいは短縮タグ機構を認めているため、ＤＴＤが必須となる。ＸＭＬの仕様では、ＤＴＤなどのスキーマを明示しないあるいはスキーマに基づいていない「整形式ＸＭＬ文書（Well-formed XML）」を認めている。
【０００４】
ＸＭＬのＤＴＤは、文書で使用することのできるタグ名や属性、要素の出現順序、要素の出現回数などを規定する。ただし、ＤＴＤは、ＸＭＬ文書と書式が相違すること、データ型を規定していないこと、および名前空間に非対応であることなどに弱点がある。このため、Ｗ３Ｃによる「ＸＭＬ  Ｓｃｈｅｍａ」、ＯＡＳＩＳ（Organization for the Advancement of Structured Information Standards）による「ＲＥＬＡＸ  ＮＧ」などのスキーマ言語が、規格化されている。
【０００５】
これらのスキーマに基づいた「妥当なＸＭＬ文書（Valid XML）」は、文書の解釈が一意となり、文書の処理を確実に行うことができる。また、「整形式ＸＭＬ文書」の場合でも、文書の解釈に不確実性は生じない。このような背景から、異なる組織間やシステム間で、文書中心型のＸＭＬ文書とともに、データ中心型のＸＭＬ文書による情報交換も増加している。
【０００６】
ＸＭＬ文書を取り扱う上で、文書の表示、作成または構造変換などの操作や処理を速やかに行えることが重要となる。Ｗ３Ｃでは、ＸＭＬ文書を取り扱う技術の標準化を進めている。主要な勧告の概要は下記のとおりである。
１）ＤＯＭ（Document Object Model）；ＸＭＬ文書の参照や作成などの各種処理を目的とするアプリケーションインターフェース。
２）ＸＰａｔｈ（XML Path Language）；ＸＭＬ文書の特定部分を経路（パス）と順序を指定するための言語。
３）ＸＳＬＴ（XSL Transformations）；ＸＭＬ文書の文書構造を変換するための言語。
【０００７】
上記の勧告では、いずれもＸＭＬ文書を順序ありの木構造データとして取り扱っている。特にＤＯＭは、要素や属性などをＤＯＭ木の枝または葉部分に忠実に展開し、要素と木構造とを１対１の密な関係で保持している。
【０００８】
一方で、ＸＭＬ文書を従来のプログラムやシステムで取り扱うために、ＸＭＬ文書を木構造データ以外のデータに変換する技術が開発されている。
【０００９】
たとえば、一部の表計算ソフトウェアでは、ＸＭＬ文書の内容をワークシートに展開する方法がある。マイクロソフト社製Ｅｘｃｅｌ２００３は、ＸＭＬ文書をワークシートに展開する機能（特許文献１参照）、およびワークシートをＸＭＬ文書として出力する機能を含んでいる。ＸＭＬ文書中のデータを概観する際は、簡単かつ有効な手段である。ただし、当該ソフトウェアのヘルプ情報によると、ＸＭＬ文書の出力に関して多くの制約が示されている。
【００１０】
【特許文献１】特開２００４−２６５４０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ＸＭＬ文書を木構造データとして取り扱う上記従来技術では、下記の問題点を含む。
１）木構造データは、配列に比べ複雑なデータ構造であり、木構造データを取り扱うプログラムは一般に複雑なものとなる。
２）ＤＯＭを用いる処理は、ＸＭＬ文書の全データをＤＯＭ木に展開するために、文書サイズよりも大きなメモリ量が必要となる。また、文書サイズによっては展開あるいは復元などの処理に多大な時間を要する場合がある。したがって、処理装置のハードウェア資源に応じた、ＤＯＭで取り扱うことができる文書サイズの上限が存在することになる。
【００１２】
また、上記ＸＭＬ文書の内容をワークシートに展開する機能やワークシートの内容をＸＭＬ化して出力する機能を備えた表計算ソフトウェアは、ＸＭＬ文書中のデータを概観するのには便利であるが、混合内容モデルを含むＸＭＬ文書を展開した際に一部のデータが欠落することや、展開の過程で一部のデータの出現順序が失われることがあるため、展開したＸＭＬ文書を、展開前の状態に復元できるとは限らない。
【００１３】
本発明は、上記問題に鑑みてなされたものであって、その第１の目的は、ユーザがＸＭＬ文書を取り扱う際に、文書内容の把握・参照、あるいはＸＭＬ文書の作成・編集を容易にするために、ＸＭＬ文書から等価テーブルに展開する方法、および等価テーブルからＸＭＬ文書を復元する方法を提供することにある。また、第２の目的は、さらに、展開した等価テーブルの特徴を利用して、ＸＭＬ文書の構造変換、非構造化文書のＸＭＬ文書化、および等価ファイルの作成を行うための方法を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の視点によれば、コンピュータが、処理対象とするＸＭＬ文書から、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、パス情報を取得するステップと、前記コンピュータが、前記ＸＭＬ文書に含まれる要素を特定し、該要素から配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により前記配置データを所定のテーブルに格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップと、前記コンピュータが、前記パス情報、前記テーブルに配置データを展開した処理対象範囲および前記テーブルを関連付けて保存するステップとを、含むことを特徴とするＸＭＬ文書展開方法およびこのＸＭＬ文書展開方法をコンピュータで実施するためのプログラムが提供される。
【００１５】
本発明の第２の視点によれば、コンピュータが、所定のテーブルからＸＭＬ文書を復元する際に用いるタグ名とその階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出すステップと、前記コンピュータが、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップとを、含むことを特徴とするＸＭＬ文書復元方法およびこのＸＭＬ文書展開方法をコンピュータで実施するためのプログラムが提供される。
【００１６】
前記各方法をより具体的に示せば、次のとおりである。ＸＭＬ文書の文書構造を反映したパス情報を表見出しとする。パス情報は、対象とするＸＭＬ文書から取得する。ＸＭＬ文書が順序固定型スキーマに基づく場合、パス情報を当該スキーマから取得してもよい。
【００１７】
表計算ソフトウェアを利用する場合、パス情報を見出し情報とする配置テーブルをワークシートに設定することができる。パス情報および配置データを表示する必要がない場合、メモリ上に２次元配列の配置テーブルを設定し、パス情報とは要素番号で対応付けすることもできる。最終的に得られる等価テーブルは、たとえば、パス情報、展開範囲および配置テーブルで構成される。なお、対象とするＸＭＬ文書は、処理を簡素化するために整形し、構文リストに格納しておくことが望ましい。
【００１８】
非終端要素についてはノードマークを配置データとし、終端要素については要素内容を配置データとする。各要素のパスとパス情報から要素番号を特定し、要素番号に対応する配置列に配置データを配置する。属性、タグ間文字データまたはコメント系データは、開始タグと終了タグに付随するデータとみなし、配置データに付加することができる。
【００１９】
本発明の一具体例であるライン型展開方法は、すべてのＸＭＬ文書を対象とし、ＸＭＬ文書の文書内容をその記述順序で等価テーブルに展開する方法であり、配置行は、配置済みデータが新たな配置データによって上書きされる場合に改行する。ライン型復元方法は、前記等価テーブルを列方向に走査しＸＭＬ文書を復元する方法である。
【００２０】
本発明の別の具体例であるブロック型展開方法は、順序固定型ＸＭＬ文書を対象とし、要素による入れ子をブロックによる入れ子として等価テーブルに展開する方法である。まず、開始タグに対応する終了タグから要素（部分木）を特定し、当該要素から子要素を識別し、第１子要素を親要素と同じ配置行に配置し、第２子以降の子要素を兄要素の配置行の次行に配置する。この際、さらに子孫要素を含む子要素については、兄弟要素よりも子孫要素を優先して配置する。
【００２１】
ブロック型復元方法は、前記ブロックによる入れ子構造から、ＸＭＬ文書（＝要素による入れ子構造）を復元する方法であり、子ブロックを含むブロックについては、兄弟ブロックよりも子ブロックを優先して復元する。具体的には、まず、対象とするブロックに対して、終端要素が出現するまで列分割処理と行分割処理とを繰り返し分割する。行分割処理の過程で、ノードマークを含む配置データが出現する際に開始タグを出力し、ノードマークを含まない配置データが出現する際にその配置データを開始タグと終了タグで囲み出力し、行分割処理から戻る際に終了タグを出力する。さらに、ブロック中に未処理範囲が残存する場合、未処理範囲を新たなブロックとしさらに分割する。
【００２２】
ＸＭＬ文書を展開する際に、展開する必要のない要素については、パス情報から当該要素およびその子孫要素を削除することによって、展開する必要のない要素を連結し展開することができる。
【００２３】
また、ブロック型展開方法とブロック型復元方法を利用することにより、ＸＭＬ文書の構造変換も容易化される。このＸＭＬ文書の構造変換は、変換元のパス情報と変換先のパス情報について、対応する要素番号を用いて対応付けを行い、変換時に対応する要素番号を元に、変換元となる要素番号の列から変換先となる要素番号の列に複写することによって、変換先の等価テーブルを作成する。
【００２４】
また、ブロック型展開方法とブロック型復元方法を利用することにより、ワークシート上の定形書式の文書やデータからＸＭＬ文書を作成することも容易化される。このワークシート上の定形書式の文書やデータからＸＭＬ文書を作成する際は、等価テーブルとリンク対応付けする。また、逆方向のリンク対応付けによって、ＸＭＬ文書内容をワークシート上の所定位置に表示することができる。ＣＳＶ形式ファイルに代表される定形ファイルからＸＭＬ文書を作成する際は、定形ファイルのデータを、等価テーブルとリンク対応付けされた一定の領域に再配置する。
【００２５】
本発明の第３の視点によれば、ＸＭＬ文書に復元可能なデータ構造が提供される。２次元の配置テーブルを１次元化するために、配置テーブルを横方向／縦方向のいずれかを優先して走査し、配置データを検出し、要素番号、行番号および配置データを各々の１次元配列に格納し等価データとする。また、パス情報と等価データとから等価ファイルを作成する。
【発明の効果】
【００２６】
本発明によれば、ＸＭＬ文書の文書構造を規定するスキーマの有無、およびＸＭＬ文書の階層の深さにかかわらず、ＸＭＬ文書の文書構造を配列に格納するとともに、ＸＭＬ文書の文書内容を別の配列に格納するため、文書構造の配列と文書内容の配列とを独自に取り扱うことが可能となる。これにより、ＸＭＬ文書を処理するプログラムを、より簡素かつ効率的なものとすることができる。
【００２７】
その理由は、たとえば、ＸＭＬ文書の文書内容が、もともと１つまたは複数のリストまたはテーブルのデータから構成されている場合、木構造データとして処理するプログラムよりも、１つまたは複数の配列として処理するプログラムが、使用メモリおよび処理速度の面で有利となることにある。
【００２８】
本発明によればさらに、ＸＭＬ文書の文書構造と文書内容とを格納した配列からＸＭＬ文書を復元することが可能となる。これにより、ＸＭＬ文書の作成などの各種処理をより簡素化することができる。
【００２９】
たとえば、ユーザは、ＸＭＬ文書が展開された等価テーブルの配置データをもとに、当該ＸＭＬ文書の文書内容を参照することができる。また、等価テーブルの配置データを、作成あるいは編集することによって、新たなＸＭＬ文書を作成することができる。
【００３０】
また、ブロック型展開方法とブロック型復元方法による配置データの定位置性を利用して、ＸＭＬ文書の構造変換を行うことができ、１つのＸＭＬ文書から関連する１つまたは複数のＸＭＬ文書を作成することができる。さらに、表計算ソフトウェアのリンク機能を用いることによって、非構造化文書のＸＭＬ文書化を行うことができる。
【００３１】
また、配置テーブルから配置データを検出し、１次元配列の等価データを作成することができる。さらに、パス情報と等価データとからＣＳＶ形式の等価ファイルを作成することができる。等価ファイルを用いることによって、ＸＭＬ文書を処理するプログラムは簡素になる。また、等価ファイルは、一部のＸＭＬ文書を除き、元のＸＭＬ文書よりも小さなファイルサイズとなり、圧縮効果が認められる。
【発明を実施するための最良の形態】
【００３２】
以下では、本発明の具体的な実施の形態について、ＸＭＬ文書を構造化文書の代表として、図面を参照しながら詳細に説明する。各図面において、同一の構成要素は同一の符号とする。なお、パス情報と２次元配列との内容については、表計算ソフトウェアのワークシート上にパス情報と２次元配列との領域を有する等価テーブルを用いて示す。
【００３３】
図１は、本発明を実現するためのコンピュータの一例を模式的に示す図である。コンピュータは、演算装置（ＣＰＵ）１０１、主記憶装置（メインメモリ；ＲＡＭ）１０２、不揮発性記憶装置（ＲＯＭ）１０３、ハードディスク装置等の外部記憶装置１０４、キーボード、マウス等の入力装置１０５、液晶ディスプレイやＣＲＴ等の表示装置１０６、および通信制御装置１０７を備える。各装置は、バス１０８を介して相互に接続される。外部記憶装置１０４としては、代表的にはハードディスク装置であるが、フロッピー（登録商標）ディスクドライブ、光磁気記憶装置、着脱可能な半導体記憶装置、あるいは通信制御装置１０７を介してネットワーク上のコンピュータの外部記憶装置としてもよい。
【００３４】
外部記憶装置１０４等の記憶装置には、本発明を実現するための処理プログラム、解析済みパス情報、パス情報対応表、および処理対象とするＸＭＬ文書等のデータを格納しておき、実行時に記憶装置から呼び出し、当該プログラムをＣＰＵ１０１で実行すればよい。また、各種の変数や配列は、ＣＰＵ１０１の作業領域として使用可能な主記憶装置ＲＡＭ１０２に保持し、処理対象のＸＭＬ文書や等価ファイルは、外部記憶装置１０４等に保持すればよい。
【００３５】
なお、コンピュータは、文書またはデータを作成することなどの処理が可能な情報処理装置であればよく、パーソナルコンピュータ（ＰＣ）のほかに、メインフレームコンピュータ、携帯電話、携帯端末（ＰＤＡ）、プログラム可能な計測装置や電化製品などの各種コンピュータが含まれる。
【００３６】
本発明によるＸＭＬ文書の処理方法について、以下の実施例に区分して説明する。ここで、実施例１から３は、ＸＭＬ文書と等価テーブルとの変換方法を示し、実施例４から８は、等価テーブルを用いて行う編集処理などの応用例を示す。
実施例１：ＸＭＬ文書の概要および展開のための準備処理
実施例２：ライン型展開方法およびライン型復元方法
実施例３：ブロック型展開方法およびブロック型復元方法
実施例４：等価テーブルを用いた解析・編集方法
実施例５：展開時の連結処理
実施例６：ＸＭＬ文書の構造変換
実施例７：非構造化文書のＸＭＬ文書化方法
実施例８：等価ファイルの作成方法
【実施例１】
【００３７】
（１）ＸＭＬ文書の概要および展開のための準備処理
本願では、ＸＭＬ文書を等価テーブルに展開する際に、要素の出現順序を確保する方法として、後述するライン型展開方法およびブロック型展開方法の２方法を開示する。これら展開方法の詳細については後述するものとして、ここでは、ＸＭＬ文書の概要を示すとともに、ＸＭＬ文書を展開するための準備処理および展開後の後処理について説明する。具体的には、展開時に用いるパス情報、パス情報の取得方法、配置データの記述方法、等価テーブルの構成、および共通する準備処理と後処理のフローについて説明する。
【００３８】
（１．１）ＸＭＬ文書の概要
始めにＸＭＬの基本的な用語を説明し、簡単なＸＭＬ文書についての解釈例を示す。
（１．１．１）要素
要素は、開始タグと終了タグとの間に要素内容を含む。要素内容には、文字データまたは要素を複数含むことができる。このため要素は、複数の子要素を入れ子として含むことができる。ＸＭＬの仕様では、要素は以下のように定義される（省略可能な空白文字を省く）。ここで、カンマ（"，"）は連続的な接続を示し、バー（"｜"）は選択を示す。また、アスタリスク（"＊"）は複数の繰り返しを示す。なお、本願では、名前空間を示す接頭辞はタグ名に含まれるものとする。
要素  ＝  （開始タグ，要素内容，終了タグ）｜空要素
開始タグ  ＝  "＜"，タグ名，属性＊，"＞"
属性  ＝  "  "，属性名，"＝"，"属性値"
要素内容  ＝  文字データ｜要素＊
終了タグ  ＝  "＜／"，タグ名，"＞"
空要素  ＝  （開始タグ，終了タグ）｜（"＜"，タグ名，属性＊，"／＞"）
【００３９】
要素以外に、コメント、ＣＤＡＴＡセッションおよび処理命令があり、以下の書式で記述される。本願では、これらを「コメント系データ」と一括して取り扱う。
コメント  ＝  "＜！−−"，コメント内容，"−−＞"
ＣＤＡＴＡセッション  ＝  "＜！［ＣＤＡＴＡ［"，内容，"］］＞"
処理命令  ＝  "＜？"，処理対象，"  "，処理内容，"？＞"
【００４０】
（１．１．２）内容モデル
ＸＭＬの内容モデルは、複数の要素を"Ａ，Ｂ，・・，Ｚ"のように展開した形で示すと次の内容モデルに区分される。
ａ）要素内容モデル：子要素として要素のみを含むモデルである。なお、本願では、要素内容モデルを順序固定性の観点より、下記のように順序型の要素内容モデルと選択型の要素内容モデルに細区分する。両者を組み合わせた型については、選択型の要素内容モデルとする。
ａ−１）順序型：Ａ＝（Ｂ，Ｃ，・・，Ｚ）
ａ−２）選択型：Ａ＝（Ｂ｜Ｃ｜・・｜Ｚ）、Ａ＝（Ｂ，（Ｃ｜Ｄ），・・Ｚ）  
【００４１】
ｂ）混合内容モデル：子要素に文字データと混在してほかの要素を含むモデルである。子要素に自己の要素を含む場合、再帰的に出現する要素となる。
Ａ＝（＃ＰＣＤＡＴＡ，Ａ｜Ｂ｜Ｃ｜・・｜Ｚ）＊
【００４２】
ｃ）任意内容モデル：子要素として要素型宣言で宣言した要素や文字データを含むモデルである。
Ａ＝"ＡＮＹ"＝（＃ＰＣＤＡＴＡ｜宣言した要素）＊
【００４３】
ｄ）空要素：子要素として何も含まないモデルである。
Ａ＝"ＥＮＰＴＹ"
【００４４】
なお、文字データからのみなるモデル（たとえば、Ｂ＝（＃ＰＣＤＡＴＡ））は、要素内容モデル、混合内容モデルおよび任意内容モデルに伴って出現する。
【００４５】
（１．１．３）ＸＭＬ文書例
次に簡単なＸＭＬ文書の例（文書例１）を示す。ここで、要素をＡ，Ｂ，・・、要素に対応するタグ名をａ，ｂ，・・、また文字データをｔ１，ｔ２，・・とする。
＜ａ Doc="Sample1"＞ｔ１＜ｂ＞ｔ２＜ｃ＞ｔ３＜／ｃ＞ｔ４＜／ｂ＞ｔ５＜ｄ＞ｔ６＜／ｄ＞ｔ７＜／ａ＞
【００４６】
ＸＭＬ文書では、改行を含まない１行のＸＭＬ文書、あるいは開始タグや要素内容の途中での改行など、多様な記述が許される。これは、スペース、タブ、改行および復帰の文字コードをすべて空白文字として取り扱っている。このため、ＸＭＬ文書の解釈・解析を行うにあたっては、ＸＭＬ文書を等価かつ取り扱いやすい書式で整形しておくことが望ましい。文書例１は、改行文字と字下げの文字を無視した場合、下記の表現と等価である。
＜ａ Doc="Sample1"＞ｔ１
＜ｂ＞ｔ２
＜ｃ＞ｔ３＜／ｃ＞ｔ４
＜／ｂ＞ｔ５
＜ｄ＞ｔ６＜／ｄ＞ｔ７
＜／ａ＞
【００４７】
文書例１の各要素は、下記の要素内容、属性および子要素を含むものとして解釈される。ここで、角括弧内の数値は階層の深さ（以下、「階層値」と記す）を示す。
要素Ａ［１］：属性:Doc="Sample1"，ｔ１，要素Ｂ，ｔ５，要素Ｄ，ｔ７
要素Ｂ［２］：ｔ２，要素Ｃ，ｔ４
要素Ｃ［３］：ｔ３
要素Ｄ［２］：ｔ６
【００４８】
（１．１．４）パス
ＸＭＬ文書の特定部分に対する経路と順序を指定するＸＰａｔｈでは、下記のように記述される。
ロケーションステップ＝"軸"，"ノードテスト"，０回以上の"［述部］"
ロケーションパス＝現位置の要素から対象要素（対象ノード）までの集合
【００４９】
本願では、特に断らない限り、ロケーションパスはルート要素から対象要素までの絶対ロケーションパス（以下、「パス」と記す）により示す。また、ロケーションステップの軸はいずれも子要素を示す"ｃｈｉｌｄ：："となるため、ロケーションステップは軸を省略した省略記法で記述する。述部については出現順序によって兄弟要素を識別する際に記述する。
【００５０】
文書例１の各要素に対応するパスは、下記のとおりである。パスは、ＸＭＬ文書中において、開始タグの出現によってロケーションステップを積み、終了タグの出現によって前記ロケーションステップを降ろすスタックとなる。
要素Ａ：／ａ
要素Ｂ：／ａ／ｂ
要素Ｃ：／ａ／ｂ／ｃ
要素Ｄ：／ａ／ｄ
【００５１】
（１．２）パス情報について
本発明によるＸＭＬ文書を等価テーブルに展開し、また復元する方法は、いずれも等価テーブルの見出し情報としてのパス情報に基づいて実行している。ここではパス情報について、スキーマが規定する文書構造の自由度、パス情報の順序固定性、展開方法との関係、取得方法および利用の観点から説明する。
【００５２】
（１．２．１）パス情報の自由度と順序固定性
文書例１の解釈例は、スキーマが明示されていない場合でも、開始タグと開始タグに対応する終了タグをもとにして、ＸＭＬ文書の要素とその要素内容を把握することができることを示している。また、各要素のパスも特定できることを示している。つまり、ＸＭＬ文書に含まれる要素の入れ子関係よりパスを特定し、ＸＭＬ文書の文書内容についてパスを用いて整理することができることを示す。
【００５３】
本願では、スキーマに基づいたパスの集合、あるいはＸＭＬ文書で実際に使用されているパスの集合を、「パスリスト」と記す。さらに、パスリストは、「階層値」と「タグ名」とからなる「パス情報」に置換することができる。
【００５４】
後述する等価テーブルでは、表の見出しとしてパス情報を用いるため、対象とするＸＭＬ文書に応じて固定されたパス情報が必要となる。つまり、パス情報の自由度がないことを前提としている。さらに、後述するブロック型展開方法では、パス情報の順序が固定されている必要がある。
【００５５】
パス情報の取得する方法として、ＸＭＬ文書の文書構造を規定するスキーマからパス情報を取得する方法と、文書例１のようにＸＭＬ文書からパス情報を取得する方法とが考えられる。スキーマに基づいたパスとＸＭＬ文書中のパスについて、自由度と順序の固定性との観点から整理すると以下のようになる。
【００５６】
「選択型の要素内容モデル」、「混合内容モデル」または「任意内容モデル」を多く含むスキーマは、タグの組み合わせについての自由度が高いことになり、これらのモデルが少なくなるほど、タグの組み合わせについての自由度は低くなる。さらに、これらのモデルを含まないスキーマは、タグの組み合わせについての自由度はなくなる。すなわち、順序型の要素内容モデルと空要素とから構成されるスキーマは、タグの組み合わせが固定されることになり、またタグの組み合わせの順序も固定されることになる。
【００５７】
ＸＭＬ文書は、文書作成時にスキーマを反映した結果として、タグの組み合わせが固定され、パスの自由度がないものとして把握することができる。また、自由度のあるスキーマ、すなわちタグの組み合わせの順序が固定されていないスキーマに基づくＸＭＬ文書の場合には、パスの順序は固定されない。逆に、自由度のないスキーマ、すなわちタグの組み合わせの順序が固定されたスキーマに基づくＸＭＬ文書の場合には、パスの順序は固定される。
【００５８】
等価テーブルで使用するパス情報は、パス情報の自由度がないことを前提としている。このため、スキーマから等価テーブルで使用するパス情報を取得できるケースは、自由度のないスキーマの場合、すなわち「順序型の要素内容モデル」と「空要素」とから構成されるスキーマの場合に限られる。また、ＸＭＬ文書は、文書作成時に固定化されたパス情報となっているため、いずれのＸＭＬ文書からもパス情報を取得することが可能である。この際、ＸＭＬ文書から取得したパス情報の順序固定性は、スキーマが規定する文書構造の順序固定性に従うことになる。
【００５９】
スキーマとＸＭＬ文書の関係について自由度の観点から表現すると、タグの組み合わせについて自由度が高いスキーマほどＸＭＬ文書は多様な文書表現が可能となり、自由度が低いスキーマほどＸＭＬ文書は定形書式の文書となる。さらに、自由度が０となるスキーマの場合には、ＸＭＬ文書は固定化された書式となるとともに、要素の出現順序も固定される。ＸＭＬ文書は、スキーマが規定する文書構造の自由度が高いほど「文書」としての性格が強く、その自由度が低くなるにつれて「データ」としての性格が強くなる。
【００６０】
本願では、順序固定性の観点から、「選択型の要素内容モデル」、「混合内容モデル」または「任意内容モデル」を含みパス情報の順序を決めることができないスキーマ、および順序固定性が不明であるスキーマを「順序非固定型スキーマ」と記し、当該スキーマに基づいたＸＭＬ文書を「順序非固定型ＸＭＬ文書」と記す。また、順序固定のパス情報を決めることができるスキーマ、すなわち順序型の要素内容モデルと空要素とから構成されるスキーマを「順序固定型スキーマ」と記し、当該スキーマに基づいたＸＭＬ文書を「順序固定型ＸＭＬ文書」と記す。なお、順序固定性が不明であるスキーマとは、スキーマ言語の文法自体が不明なスキーマや、解析することが困難なスキーマを含める。また、整形式ＸＭＬ文書は、スキーマとの整合性が自明でないため、「順序非固定型ＸＭＬ文書」として扱うものとする。
【００６１】
「順序非固定型ＸＭＬ文書」と「順序固定型ＸＭＬ文書」の関係は、「整形式ＸＭＬ文書」と「妥当なＸＭＬ文書」の関係と同様に、排他的に区分されるものではなく、図２に示すように前者が後者を包含する関係となる。図２において、点線で囲まれた領域Ａは「順序非固定型ＸＭＬ文書」を表しており、実線で囲まれた領域Ｂは「順序固定型ＸＭＬ文書」を表している。
【００６２】
すなわち、「順序非固定型ＸＭＬ文書」をＸＭＬ文書の一般解とすると、「順序固定型ＸＭＬ文書」はＸＭＬ文書の特殊解とみなすことができる。たとえば、整形式ＸＭＬ文書（つまり「順序非固定型ＸＭＬ文書」）でも、背景となるスキーマが順序固定性を満たしかつ当該スキーマに基づいていることが確実な場合には「順序固定型ＸＭＬ文書」として扱うことができる。
【００６３】
（１．２．２）ＸＭＬ文書と展開方法との関係
ここでは、パス情報の順序固定性によるＸＭＬ文書の区分、およびＸＭＬ文書の区分と展開方法の適用性との関係について説明する。
【００６４】
ライン型展開方法は、順序非固定型ＸＭＬ文書（順序固定型ＸＭＬ文書も含む）を対象とした展開方法であり、パス情報の順序固定性を利用していない。このため、ＸＭＬ文書から取得したパス情報で十分である。
【００６５】
ブロック型展開方法は、順序固定型ＸＭＬ文書を対象とした展開方法であり、パス情報の順序固定性を利用している。順序固定型スキーマに基づくＸＭＬ文書は順序固定型ＸＭＬ文書となるため、このＸＭＬ文書から取得したパス情報をもとにして展開方法を行うことができる。なお、ＸＭＬ文書から取得したパス情報は、一部のパスが欠落する不完全なパス情報となる可能性がある。文書内容の参照や編集を行う場合は、不完全なパス情報でも十分である。
【００６６】
しかし、後述する構造変換処理、応用プログラムにＸＭＬ文書の文書内容を引き渡す処理を行う場合、順序が固定されかつ欠落のない完全なパス情報が必要となる。完全なパス情報は、順序固定型スキーマを解析することによって取得することができる。しかし、順序非固定型スキーマの場合にはパスの順序が固定されないため、等価テーブルの見出し情報として有意なパス情報は取得できない。
【００６７】
部分的に順序非固定型スキーマとなる内容モデルを含むために順序非固定型ＸＭＬ文書に区分される文書の場合、処理上の制約を設けることによって、順序固定型ＸＭＬ文書として取り扱うことができる。
【００６８】
たとえば、文書の種類に応じて書式が異なる際に、ルート要素に近い所で「選択型の要素内容モデル」を用いているケースがある。このような場合には、「選択型の要素内容モデル」を「順序型の要素内容モデル」としてみなし、順序固定型ＸＭＬ文書として取り扱うことができる。ただし、ブロック型展開方法では、「選択型の要素内容モデル」に相当する要素の順序が保たれないため、展開および復元の過程で順序の確認が必要となる。
【００６９】
また、末端となる要素あるいは末端に近い要素が「選択型の要素内容モデル」となっているケースや、文字データ（＃ＰＣＤＡＴＡ）に強調や下線などの部分的な文字飾りを加えるために「混合内容モデル」を含むケースがある。このような場合、「選択型の要素内容モデル」や「混合内容モデル」を１つの要素内容としてまとめて取り扱うことによって、順序固定型ＸＭＬ文書として取り扱うことができる（実施例４「連結処理」参照）。
【００７０】
（１．２．３）ＸＭＬ文書からパス情報の取得
図３（ａ）は、順序非固定型ＸＭＬ文書のパスリストの例として、インターネットで公開されているあるＸＨＴＭＬ文書から取得したパスリストを示したものである。このパスリストは、ＸＭＬ文書中のパスに着目し走査し、新規に出現するパスを単にパスリストに追加したものである（角括弧内の数値はパスの出現番号を示す）。その結果、パスリストは、共通の親をもつパスでも分散して出現することになり、後述の展開方法や復元方法などの処理を行うためには十分ではなく、並び替えを行う必要がある。
【００７１】
パスリストの先頭部（図３（ａ）[1]〜[15]）では、下記の規則性があり、これらの規則性をパスリストの全体に適用し、パスで区分した要素を特定するための番号を決定し、この番号を「要素番号」とする。
１）ある着目するパスについて、親要素を示すパスが着目するパスよりも必ず先に出現する。
２）ある着目するパスについて、弟要素を示すパスと子要素を示すパスが共に存在する場合には、子要素を示すパスが先に出現する。
【００７２】
図３（ｂ）は、図３（ａ）のパスリストを対象として、パスの出現順序を考慮した深さ優先探索（Depth first search）を行い、探索を行う際の順序によって要素番号を決定し、要素番号で並び替えたパスリストである（角括弧内の数値は要素番号を示す）。並び替えた後のパスリストは、要素番号を添字とする「階層値」と「タグ名」との２つの配列に置換することができ、パス情報とすることができる。ここで、「階層値」は、各パスのロケーションステップのステップ数に相当し、ルート要素から着目要素までの階層の深さを示す値である。具体的には、ルート要素の階層値を１とし、その子要素の階層値を２、その孫要素の階層値を３とし、階層の深さが増すにつれて１ずつ増加していくものとする。「タグ名」は、各パスの階層値に応じたロケーションステップに相当する。
【００７３】
図４（ａ）および図４（ｂ）は、共に図３（ｂ）に示すパスリストからパス情報に置き換え、表示したリストである。図４（ａ）は階層値とタグ名を要素番号順に列記したリストである。また、図４（ｂ）は階層値に応じてタグ名の表示行を下方へ移動させたリストである。階層値が表示用の最大行数を超える場合には、最大行数に固定し表示するものとする。図４（ｂ）の表示方法によれば、タグによる階層性を視覚的に把握することができる。
【００７４】
図５は、ＸＭＬ文書からパス情報を取得する方法を示すフローチャートである。図５に示すフローは、後述するＸＭＬ文書の展開方法を示すフローチャート（図１０）のステップ１００６に相当する。なお、ＸＭＬ文書を整形した構文リストはステップ１００２で作成されているものとする。
【００７５】
まず、階層値の初期値をＫ＝０とし、ルート要素の開始タグが出現した段階で階層値Ｋ＝１とし、以降、開始タグが出現する度に初期値Ｋをインクリメントさせ、終了タグ出現する度に初期値Ｋをデクリメントさせる。このように、常に階層値Ｋを監視しながら、ＸＭＬ文書の終了まで走査する。空要素は、開始タグと終了タグを組み合わせたものとして取り扱う。ルート要素の終了タグが出現した段階で階層値Ｋ＝０となれば、開始タグと終了タグの個数が等しいことを示す。走査の段階において、開始タグより取得したタグ名をロケーションステップとし、階層値Ｋをロケーションステップのステップ数とするパスを作成し（ステップ５０１）、取得済みのパスリストのパスと比較することによって新規に出現するパスか否かを判定する。新規に出現するパスは、パスリストに追加し取得済みのパスとする（ステップ５０２）。
【００７６】
次に、パスリストにおいてルート要素から子要素のパスを検索し、出現する子要素のパスに要素番号を付ける処理を行い、さらに子要素と兄弟関係のパスよりも子要素の子要素（＝孫要素）のパスを優先し、子要素のパスから孫要素のパスを検索し要素番号を付ける処理を再帰的に繰り返す。これによって、すべてのパスに対して要素番号を付け（ステップ５０３）、要素番号でパスリストの整列を行う（ステップ５０４）。さらに、要素番号で整列した後のパスリストを、階層値とタグ名に置換することによってパス情報を得る（ステップ５０５）。
【００７７】
ＸＭＬ文書が順序非固定型ＸＭＬ文書である場合には、要素の出現順序が固定されていない文書であるため、偶然性を伴う順序であってもパス情報として問題はない。たとえば、図３（ｂ）に示す"／ｈｔｍｌ／ｂｏｄｙ"の子ロケーションステップにあたる"ｈ１"、"ｈ２"、"ｄｉｖ"および"ｐ"などのタグ名は、必ずしもこの順序で出現する必要はなく、ＸＨＴＭＬ文書を作成した際の文書内容による偶然性を伴う順序である。
【００７８】
しかしながら、ＸＭＬ文書が順序固定型ＸＭＬ文書である場合でも、同じ要素の繰り返しで、先の繰り返しで出現する要素よりも後の繰り返しで異なる要素が先に出現し、要素の出現順序が逆転するケースが発生する。したがって、ＸＭＬ文書が順序固定型ＸＭＬ文書に区分される場合（ステップ５０６）、ＸＭＬ文書から取得したパス情報について、ＸＭＬ文書を再走査することによってパス情報の順序を検証する必要がある（ステップ５０７）。パス情報に逆転部分が含まれる場合、逆転部分がなくなるまで、逆転部分の入れ替え処理を繰り返し行う必要がある（ステップ５０７〜ステップ５０９）。
【００７９】
（１．２．４）スキーマからパス情報の取得
前述したように、構造変換処理、あるいは応用プログラムにＸＭＬ文書の文書内容を引き渡す処理などを行う場合には、欠落のない完全なパス情報が必要となる。完全なパス情報を取得するためには、スキーマの解析が必要となるが、当然のことながらスキーマ言語によって文法は異なり、対象とするスキーマによっては非常に難解な処理となる。パス情報を取得することに限れば、いずれのスキーマ言語でも、スキーマから内容モデルを特定し、親子関係となる要素から階層値とタグ名を識別し、パス情報を決定することになる。
【００８０】
パス情報を取得する別の方法として、解析対象とするスキーマに基づいたＸＭＬ文書の中からできる限り多くのパス情報を含むＸＭＬ文書を選択し、前記のＸＭＬ文書から取得する方法でパス情報を決定する。このパス情報とスキーマが規定する内容とを照合し、不足するパスがあればパス情報に補完すればよいことになる。
【００８１】
この際、スキーマ言語「ＸＭＬ  Ｓｃｈｅｍａ」および「ＲＥＬＡＸ  ＮＧ」によるスキーマは、共に「順序非固定型ＸＭＬ文書」に区分されるＸＭＬ文書であり、後述するライン型展開方法によってスキーマの文書内容を展開することができる。このため、ＸＭＬ文書から取得したパス情報に対して、ＸＭＬ形式のスキーマを別の等価テーブルに展開し、その展開内容に基づいて、補完すればよい。
【００８２】
スキーマの解析あるいはスキーマに基づいて補完したパス情報は、いずれもスキーマに基づいたパス情報となる。このパス情報を「解析済みパス情報」として記録しておくことにより、後の展開方法において再利用することが可能となる。
【００８３】
（１．２．５）パス情報の利用
文書例１は、非常に簡単な文書例であるため、以降の説明では図６に示すＸＭＬ文書（文書例２）も用いる（角括弧内の数値はＸＭＬ文書の行数を示す）。文書例２は、スキーマを明示していないが「順序固定型ＸＭＬ文書」であるＸＭＬ文書とし、ライン型展開方法、ブロック型展開方法、編集、および構造変換の対象文書とする。
【００８４】
文書例２から図５に示す方法により取得したパス情報を、図７（ａ）に示す。取得したパス情報から、終端要素の識別、ある要素の子孫要素が展開されうる範囲およびパスを決定することができる。
【００８５】
図７（ｂ）は、終端要素の識別とある要素の子孫要素が展開されうる範囲とを説明するための図である。終端要素の識別は、次の要素が子要素とならないことを判定すればよく、着目する要素の階層値Ｋ１と次の要素の階層値Ｋ２について、Ｋ２≠Ｋ１＋１（Ｋ２＜Ｋ１＋１）の場合には終端要素と判定される。
【００８６】
一方、次の要素の階層値Ｋ２が子要素となる階層値（Ｋ２＝Ｋ１＋１）であり、着目する要素が要素内容モデルである場合には非終端要素となる。しかし、「混合内容モデル」または「任意内容モデル」である場合、子要素を含み非終端要素となるケースと、文字データ（＃ＰＣＤＡＴＡ）からなる終端要素となるケースとが発生するため、パス情報から両者を一意に決定することはできない。したがって、「順序非固定型ＸＭＬ文書」である場合には、子要素を含むか否かの判定によって非終端要素と終端要素とを識別することになる。逆に「順序固定型ＸＭＬ文書」である場合、非終端要素と終端要素とを一意に判定することができる。
【００８７】
また、非終端要素の階層値を超える階層値が連続する範囲は、当該非終端要素の子孫要素が展開されうる範囲となる。本願では、終端要素の場合も含め、ある要素の子孫要素が展開されうる範囲の終端となる要素番号を「終端番号」と記す。図では丸で囲むタグ名から延びる矢印先端の要素番号が終端番号となる。終端要素の場合、当該要素の要素番号が終端番号となり、展開されうる列範囲の幅は１となる。
【００８８】
ある要素番号のパスは、当該要素番号までの最後に出現した各階層値のタグ名を特定し、階層値１から当該要素番号の階層値までの"／タグ名"を連結することによって得ることができる。すべての要素番号に対するパスを得ることによって、パスリストが作成される。
【００８９】
図７（ｃ）は、終端要素（=True）の識別、終端番号およびパスを整理した図である。なお、終端要素の"−"記号は、終端要素と非終端要素とを一意に識別することはできないことを示す。
【００９０】
パス情報は、階層値とタグ名とからなる配列であり、階層の深さに特に制約はない。このため、階層が非常に深いＸＭＬ文書でも、そのパス情報から要素の親子関係と兄弟関係を表現することができる。また、要素番号別に、終端要素の識別、終端番号およびパスを容易に特定することができる。たとえば、図７（ａ）の要素番号６に対応する配置列に文字列"Ｚ"が配置されている場合、階層値＝４、タグ名＝"Ｆ"、終端番号＝６、終端要素＝"True"、およびパス＝"／Ａ／Ｂ／Ｅ／Ｆ"となる。"Ｚ"は、配置列が終端要素であることと後述する付加データの書式に一致しないことにより、付加データを伴わない要素内容と判定され、要素内容＝"Ｚ"となる。また、要素Ｆの先祖階層または親階層にあたる要素Ａ、要素Ｂおよび要素Ｅは、孫子要素または子要素として"＜Ｆ＞Ｚ＜／Ｆ＞"を含むことになる。
【００９１】
また、パス情報からＸＭＬ文書の文書構造を規定するスキーマを、部分的に推定することができる。図８は、図７（ａ）から推定される文書型定義（ＤＴＤ）を示したものである。ここで、要素の出現回数については、ルート要素を除き特定することができないため、「０回以上（"＊"）」としている。また、要素の出現順序については、「順序固定型ＸＭＬ文書」であることを前提とし、子要素のタグ名をカンマ（"，"）で連結している。「順序非固定型ＸＭＬ文書」である場合、順序固定性が不確実な部分をバー（"｜"）で連結することになる。
【００９２】
（１．３）要素内容・その他データの記述方法
ＸＭＬ文書から抽出した要素内容、属性およびコメント系データを配置する際に、要素内容や属性などを分散して格納することは、処理の複雑化を招くとともに、参照や編集などの操作の障害となる。本願では、パス情報で区分される要素について、要素内容や属性など性質の異なるデータを１つの文字列（以下、「配置データ」と記す）にまとめ、後述する等価テーブルに配置する。以下では、ＸＭＬ文書から要素内容や属性などを抽出し、配置データとして表現する際の書式を示す。
【００９３】
また、ＸＭＬ文書のルート要素を含めその範囲内に含まれる、すべての要素（属性を含む）、要素内容およびコメント系データを、配置の対象データとし、これらをまとめて「文書内容」と記す。なお、ＸＭＬ文書のＸＭＬ宣言部などルート要素が出現するまでの記述部分が必要となる場合、元のＸＭＬ文書を参照することによって得ることができる。
【００９４】
（１．３．１）配置データの区分について
本願では、非終端要素の出現を明示的に示すマーク（以下、「ノードマーク」と記す）を等価テーブルに配置することによって非終端要素の出現を表現する。したがって、着目する要素が非終端要素の場合に「ノードマーク」を、終端要素の場合に「要素内容」を配置データとして等価テーブルに格納する。
【００９５】
順序非固定型ＸＭＬ文書では、対応しないタグ間にも非終端要素の要素内容の一部である文字データ（以下、「タグ間文字データ」と記す）が出現する。たとえば、前述の文書例１では、ｔ１、ｔ２、ｔ４、ｔ５およびｔ７がタグ間文字データに相当する。これらのタグ間文字データを終端要素の要素内容である文字データｔ３およびｔ６と同等に取り扱うことはＸＭＬ文書の復元を困難にする。このため、本実施の形態では、タグ間文字データを直前の開始タグまたは直前の終了タグから連続する文字データとみなし、直前の開始タグまたは直前の終了タグに付随する文字データとして取り扱う。
【００９６】
（１．３．２）配置データの書式について
［ノードマーク］
ＸＭＬ文書の展開時に非終端要素となる開始タグが出現した際に、ユニークな「ノードマーク」を用いて表現する。本実施の形態では、「ノードマーク」を"→"または"→[番号]"で表現した配置データとする。ここで、"[番号]"は非終端要素の出現順序を示したもので、ユーザの理解を容易にするために付加する番号であり、必須のものではない。
【００９７】
［要素内容］
開始タグと開始タグに対応する終了タグ間の要素内容を、そのまま配置データとする。空要素あるいは要素内容が空の場合、空マーク（""）を配置データとする。
【００９８】
［属性］
開始タグに含まれる属性は、以下に示すユニークな符号（ただし、文書中の文字列と重複する場合は異なる符合）を用いてマーク付けを行い、当該開始タグの配置データに付加する。
"{At{属性＊}}"：属性＊＝開始タグに含まれるすべての属性
【００９９】
［タグ間文字データ］
タグ間文字データは、次のようなユニークな符号（ただし、文書中の文字列と重複する場合は異なる符合）を用いてマーク付けを行い、直前の開始タグまたは終了タグの配置データに付加する。
"{Ts{文字列}}"：文字列＝開始タグ直後に出現するタグ間文字データ
"{Ts{文字列}}"：文字列＝終了タグ直後に出現するタグ間文字データ
【０１００】
［コメント系データ］
コメント系データ（コメント、ＣＤＡＴＡセッションおよび処理命令）は、次のようなユニークな符号（ただし、文書中の文字列と重複する場合は異なる符合）を用いてマーク付けを行い、直前の開始タグまたは終了タグの配置データに付加する。
"{Cs{コメント}}"：コメント＝開始タグ直後に出現するコメント系データ
"{Ce{コメント}}"：コメント＝終了タグ直後に出現するコメント系データ
【０１０１】
本願では、上記の"{At|Ts|Ts|Cs|Cs{＊}}"形式となるデータを「付加データ」と呼び、開始タグまたは終了タグに伴って出現した際に、ノードマークまたは要素内容からなる配置データに付加するものとする。前述の文書例１では、各要素の配置データは次のようになる。
要素Ａ："→[1]{At{Doc="Sample1"}}{Ts{ｔ１}}"
要素Ｂ："→[2]{Ts{ｔ２}}{Te{ｔ５}}"
要素Ｃ："ｔ３{Te{ｔ４}}"
要素Ｄ："ｔ６{Te{ｔ７}}"
【０１０２】
（１．４）等価テーブルについて
ＸＭＬ文書の文書内容を表形式データとしてテーブル（以下、「等価テーブル」と記す）に展開することが可能であれば、要素の速やかな把握、参照材料としての取得、従来アプリケーションと整合を取ることなどの作業が容易となる。さらに、展開した等価テーブルで文書内容の編集を行い、ＸＭＬ文書として復元することが可能であれば、ＸＭＬ文書を更新することができる。
【０１０３】
ＸＭＬ文書を展開し復元するための等価テーブルに求められる条件は、単一のテーブルであること、理解しやすいテーブルであること、および参照や編集などの操作を容易にできることである。逆に、要素の複数テーブルへの分散、要素の複数箇所での出現、あるいは順序情報の出現などは、テーブルの理解あるいは操作を妨げることになる。上記の観点より、本願における等価テーブルについての考え方を整理し以下に示す。
【０１０４】
（ａ）等価テーブルの数と大きさ
単一のテーブルを基本とし、テーブルの大きさを制限しない。テーブルは、あくまでもＸＭＬ文書の参照や編集などを行うための一時的な作業テーブルであるため、巨大なテーブルとなってもかまわない。
【０１０５】
（ｂ）要素の順序情報
等価テーブルに要素の順序情報を含めずに、等価テーブルへの配置方法により要素の順序を特定する。仮に、テーブルに要素の順序情報を含めた場合、単に要素を追加したい場合でも順序情報の編集を行う必要が生じる。この際、順序情報をユーザが編集することは困難さと煩雑さを伴う作業となる。また、さまざまな操作に対応した順序情報の変更は、煩雑な処理となる。
【０１０６】
（ｃ）等価テーブルの見出し
ＸＭＬ文書またはスキーマから取得したパス情報を、等価テーブルの見出しとする。このことによって、さまざまなパス情報のＸＭＬ文書を取り扱うことができる。なお、本実施の形態ではパス情報を列方向に配置するが、パス情報を行方向に配置することも当然可能である。
【０１０７】
（ｄ）等価テーブル中の文書数
同一文書構造のＸＭＬ文書を複数展開する場合、同じパス情報となるため、１つの等価テーブルに複数のＸＭＬ文書を展開することが可能である。このことによって、展開された文書内容の比較や、複数文書にまたがる処理が容易となる。
【０１０８】
本実施の形態では、パス情報や展開した文書内容を表示するために、表計算ソフトウェア（マイクロソフト社製Ｅｘｃｅｌ２０００またはＥｘｃｅｌ２００３）を使用する。この表計算ソフトウェアの利点は、アプリケーション用プログラム言語が使用できること、ワークシート上に等価テーブルを設定することできセルに配置された値は直ちに表示されること、およびユーザによる参照や編集が容易であることである。なお、単に「編集」などと記述している部分は、上記表計算ソフトウェアによる編集機能を用いている。
【０１０９】
図９は、ワークシート上に入出力領域や等価テーブルなどの領域を配置した例を示す図である。ワークシート９００において、入力領域９０１および出力領域９０２は、ＸＭＬ文書の入力行と出力行を確認するための領域であり、同時に各種の符号化文字集合に対応したエディタや関連するアプリケーションと、コピーアンドペーストによって入出力を行うための領域である。作業領域９０３は、構文リストの表示や、入力ＸＭＬ文書と出力ＸＭＬ文書との比較結果を表示するための領域である。
【０１１０】
等価テーブル９０４は、スキーマ領域９０５、処理対象範囲９０６および配置領域９０７から構成される。
【０１１１】
スキーマ領域９０５は、ＸＭＬ文書あるいはスキーマから取得したパス情報、およびその他スキーマ情報を、等価テーブル９０４の見出し情報を配置する領域である。なお、その他スキーマ情報とは、出現順序、出現回数、データ型などである。いずれのその他スキーマ情報も、本願で示す展開方法および復元方法に関与しない情報である。このため、スキーマ領域にはパス情報のみを示す。
【０１１２】
処理対象範囲９０６は、等価テーブル９０４において対象とするＸＭＬ文書の展開の範囲を表示し、また、復元を行う際に配置テーブルの復元対象範囲を指定するために使用する。開始行J_min、終了行J_max、開始列I_min、終了列I_maxの順で表示する。同一文書構造の複数のＸＭＬ文書を等価テーブルに展開する際には、ＸＭＬ文書の文書内容を追記するために、既存文書の展開終了行の次行（既存文書が存在しない場合は開始行＝１）から展開し、展開後に処理対象範囲を配置する。また、等価テーブルを復元する際には、複数の文書にまたがる範囲あるいは矩形範囲を対象範囲とすることによって、複数のＸＭＬ文書あるいはＸＭＬ文書の断片（部分木）を復元することができる。
【０１１３】
配置領域９０７は、ＸＭＬ文書から取得した配置データを格納する領域であり、文字列型の２次元配列「配置テーブル（Ｊ，Ｉ）」からなる。ここで、ＪとＩは共に正整数の添字であり、Ｊは配置行を、Ｉは配置列を示す。配置行Ｊは、後述するライン型展開方法またはブロック型展開方法の各展開ルールによって決定する。配置列Ｉは、各要素のパスと後述する要素識別用パスリストとを照合し要素番号Ｉを特定し決定する。初期状態では、配置列Ｉ＝要素番号Ｉとなるが、パス情報を一部削除するなど編集がなされた場合、配置列と要素番号の対応表を作成し対応させる。
【０１１４】
配置領域に、前述の"{At|Ts|Ts|Cs|Cs{＊}}"形式の付加データが多く含まれると、配置データの視認性が悪く、属性値の参照も行いにくい。また、配置データを数値データとして取り扱う際には、付加データを分離した後に数値化する必要がある。さらに、ほかのプログラムにデータを引き渡す際に、プログラム側で分離するための処理が必要となる。このため、配置領域中の付加データを分離して格納するための付加データ領域９０８を設けている。ただし、ＸＭＬ文書や用途によっては付加データ領域９０８を必要としないケースもあり、付加データ領域の使用は選択機能とする。
【０１１５】
なお、等価テーブルなどを表示装置１０５に表示する必要がない場合、処理に適したプログラム言語を用いて、メモリ上の配列に設定することができる。この際、等価テーブルは、パス情報、処理対象範囲および配置テーブルをあわせたものとする。
【０１１６】
（１．５）展開前および展開後の処理フロー
本願では、ＸＭＬ文書を等価テーブルに展開する際に、後述するライン型展開方法またはブロック型展開方法によって、要素の出現順序を確保している。以下、これら展開方法の共通する展開前の準備処理および展開後の後処理について説明する。
【０１１７】
図１０は、ＸＭＬ文書を等価テーブルに展開する際の準備処理および後処理を示すフローチャートである。まず、ユーザが指定したＸＭＬ文書の展開方法とパス情報の取得方法とを読み込む（ステップ１００１）。なお、ユーザの指定が無い場合は、コンピュータが汎用的な方法を選択する。具体的には、ＸＭＬ文書の展開方法はライン型展開方法とし、またパス情報の取得方法はＸＭＬ文書からパス情報を取得する方法とする。
【０１１８】
次に、対象とするＸＭＬ文書を入力領域から読み込み、開始タグと終了タグを参照して、読み込み部分の文書構造が以下に示すいずれかのパターンに一致するように整形し、文字列型配列である構文リストに格納する（ステップ１００２）。
【０１１９】
ａ）開始タグ
ｂ）開始タグ＋要素内容＋終了タグまたは、空要素タグ
ｃ）終了タグ
【０１２０】
具体的には、文書整形用のキューを用意し、ＸＭＬ文書の各行をキューに追加する。この際、タブ、改行および復帰は空白文字とするためスペースに置換する。開始タグと終了タグとの個数が３個以上または文末部となった時点で、上記のパターンのいずれに一致するかを判定し、判定したパターンをキューから取り出し、構文リストに格納する。また、「コメント系データ」や後述の「タグ間文字データ」に相当する文字列は、直前の開始タグまたは終了タグから連続する文字データとして取り扱う。したがって、上記ａ）またはｃ）の場合は２つ目のタグが出現する直前までの文字列を、上記ｂ）の場合は３つ目のタグが出現する直前までの文字列をキューから取り出す。
【０１２１】
字下げなどによる空白文字を取り扱う必要がない場合、すなわち、要素内容モデルからのみ構成され「タグ間文字データ」が出現しても要素内容とならない場合には、構文リストに格納する時点（ステップ１００２）で、これらの空白文字を取り除くことができる。実施例では、字下げなどの空白文字を取り除いて示す。
【０１２２】
ステップ１００３は、等価テーブルにパス情報が配置済みまたは未配置による分岐である。パス情報が配置済みである場合、すなわち同一文書構造の複数のＸＭＬ文書を展開する場合、配置済みのパス情報を取得し（ステップ１００４）、ステップ１０１０に進む。パス情報が未配置である場合、すなわち新規のＸＭＬ文書を展開する場合、ステップ１００５に進み、パス情報の取得方法によって分岐する。なお、配置済みのパス情報について変更する必要がある場合には、展開の開始前に入力手段を用いて変更すればよい。
【０１２３】
ステップ１００６から１００７は、ＸＭＬ文書からパス情報を取得するケースであり、図５に示す方法でＸＭＬ文書からパス情報を取得し（ステップ１００６）、取得したパス情報を配置する（ステップ１００７）。
【０１２４】
ステップ１００８から１００９は、解析済みパス情報を参照しパス情報を取得するケースである。ＸＭＬ文書からスキーマファイル名を抽出し、スキーマファイル名で「解析済みパス情報」を検索する（ステップ１００８）。解析済みパス情報が存在する場合は解析済みパス情報を取得し（ステップ１００９）、解析済みパス情報が存在しない場合には、ＸＭＬ文書からパス情報を取得する（ステップ１００６）。取得したパス情報を配置する（ステップ１００７）。
【０１２５】
ステップ１０１０では、階層値とタグ名とからなるパス情報から、終端要素の識別、終端番号の取得および要素識別用のパスリストの作成を行う。
【０１２６】
ステップ１０１１は、ステップ１００１の展開方法による分岐であり、ステップ１０１２のライン型展開方法（図１１参照）、またはステップ１０１３のブロック型展開方法（図１６参照）のいずれかを呼び出し実行する。
【０１２７】
ステップ１０１４は、ＸＭＬ文書の展開を終えた後に、等価テーブルに展開した範囲（行範囲:J_min〜J_max、列範囲:I_min〜I_max）を、処理対象範囲９０６に配置する。
【０１２８】
（１．６）パス情報についてのまとめ  
実施例１では、ＸＭＬ文書の概要を示すとともに、展開で用いるパス情報、パス情報の取得方法、配置データの記述方法、等価テーブルの構成、および展開方法前後の処理フローについて説明した。以下、パス情報にかかわる特徴を整理して示す。
１）パス情報は、階層値とタグ名とからなる配列であり、等価テーブルの見出し情報とする。パス情報からは、要素番号別に、終端要素の識別、終端番号およびパスを特定することができ、ＸＭＬ文書に含まれる要素の親子関係と兄弟関係とを把握することができる。
２）パス情報の順序固定性の観点より、スキーマについては「順序非固定型スキーマ」と「順序固定型スキーマ」に、ＸＭＬ文書については「順序非固定型ＸＭＬ文書」と「順序固定型ＸＭＬ文書」に識別される。
３）パス情報は、ＸＭＬ文書から取得することができ、順序固定型スキーマの場合、当該スキーマを解析することによっても取得することができる。
【実施例２】
【０１２９】
（２）ライン型展開方法およびライン型復元方法
ここでは、ＸＭＬ文書を等価テーブルにライン型展開方法と、等価テーブルからＸＭＬ文書を復元するライン型復元方法について説明する。ライン型展開方法およびライン型復元方法は、ＸＭＬ文書について開始タグと終了タグを用いて要素を表現したリストであると捉え、開始タグ、要素内容、終了タグからなる要素の記述順序でリストを展開し、また復元する方法である。
【０１３０】
具体的には、ライン型展開方法は、ＸＭＬ文書を走査し、常に開始タグと終了タグを監視し、タグから組み立てたパスを要素識別用パスリストと照合することによって要素番号を特定し、配置データを等価テーブルに展開する。また、ライン型復元方法は、展開した等価テーブルを列方向に走査し、配置データを検出しＸＭＬ文書を復元する方法である。なお、ＸＭＬ文書の文書内容を、等価テーブルの各行について終端と次行の開始端とを連結した「１つの線」に展開するため、「ライン型」と表現している。
【０１３１】
ライン型展開方法は、「順序非固定型ＸＭＬ文書」あるいは「順序固定型ＸＭＬ文書」にかかわらず、すべてのＸＭＬ文書を対象とすることができる。また、ライン型展開方法によって得られる等価テーブルから、ライン型復元方法によってＸＭＬ文書を復元することができる。したがって、ライン型展開方法とライン型復元方法は、汎用的な展開方法と復元方法となる。
【０１３２】
（２．１）ライン型展開方法
ライン型展開方法では、構文リストを読み込むつどパスを組み立て、要素識別用パスリストと照合し要素番号を求め、要素番号に対応する配置列を決定する。配置済みデータが上書きされる場合に改行し、配置データを配置テーブルに配置する。
【０１３３】
図１１は、第１の展開方法であるライン型展開方法を示すフローチャートであり、図１０に示すように、ＸＭＬ文書を整形し構文リストに格納する処理（ステップ１００２）、およびパス情報の取得とパス情報にかかわる処理（ステップ１０１０）を実行した後に、呼び出される（ステップ１０１２）。
【０１３４】
まず、構文リストの範囲、展開開始行および階層値の初期値を設定する（ステップ１１０１）。ここで、構文リストの範囲はルート要素の範囲を設定する。展開開始行Ｊ_Staは、展開対象のＸＭＬ文書を配置テーブルに配置する際の先頭行であり、既存データが存在しない場合はＪ_Sta＝１、存在する場合はＪ_Sta＝Ｊ_Max＋１とし既存データに追加する。
【０１３５】
ステップ１１０２からステップ１１２０のループは、構文リストの行数Ｌをカウンタ変数とし、すべての行を順次展開するためのループである。
【０１３６】
まず、構文リストから行（Ｌ）を取得する（ステップ１１０３）。行（Ｌ）が、開始タグから開始する場合（ステップ１１０４）はステップ１１０５へ進み、空要素タグから開始する場合（ステップ１１１５）はステップ１１１６へ進み、それ以外の場合（ステップ１１１７）はステップ１１１８へ進む。
【０１３７】
開始タグから開始するの場合（ステップ１１０４）、まず、階層値Ｋをインクリメントし、パスを組み立て、要素識別用パスリストと照合することによって要素番号Ｉを特定する（ステップ１１０５）。
【０１３８】
次に、ステップ１１０６で開始タグに対応する終了タグを含む場合、要素内容を配置データに格納し、階層値Ｋをデクリメントする（ステップ１１０９）。
【０１３９】
ステップ１１０６で開始タグに対応する終了タグを含まない場合、さらに要素番号Ｉが終端要素に相当するか否かを判定する（ステップ１１０７）。終端要素に相当する場合、すなわち後述する展開時の連結処理に相当する場合、開始タグと開始タグに対応する終了タグ間の文字列を連結して配置データに格納し、階層値Ｋをデクリメントする（ステップ１１１０）。なお、開始タグと開始タグに対応する終了タグとが異なる行に存在する場合、変数Ｌを終了タグの行まで進める。
【０１４０】
ステップ１１０７で要素番号Ｉが終端要素に相当しない場合、非終端要素としてノードマーク"→"を配置データに格納する（ステップ１１０８）。
【０１４１】
空要素タグから開始するの場合（ステップ１１１５）、パスを組み立て、要素識別用パスリストと照合することによって要素番号Ｉを特定し、空マーク（""）を配置データに格納する（ステップ１１１６）。なお、階層値については増減させない。
【０１４２】
上記の配置データに対して、属性、タグ間文字データまたはコメント系データがあれば配置データに付加する（ステップ１１１１）。
【０１４３】
配置行Ｊは、要素番号Ｉに対応する配置列Ｉが、ステップ１１１２で、配置列Ｉ＞前配置列Ｉ_Preが偽である場合、つまり配置列Ｉ≦前配置列Ｉ_Preとなる場合に、配置行Ｊをインクリメントさせ、改行する（ステップ１１１３）。上記の配置データを配置テーブル（Ｊ，Ｉ）に配置し、また前配置列Ｉ_Pre＝配置列Ｉとする（ステップ１１１４）。
【０１４４】
終了タグから開始するの場合（ステップ１１１７）、まず、階層値Ｋをデクリメントし、パスを組み立て、要素識別用パスリストと照合することによって要素番号Ｉを特定する（ステップ１１１８）。終了タグ後のタグ間文字データまたはコメント系データがあればこれらを付加データとし、配置テーブル（Ｊ，Ｉ）に付加する（ステップ１１１９）。ここで、配置行Ｊは終了タグに対応する開始タグの配置行である。
【０１４５】
（２．２）ライン型展開方法の結果
図１２は、文書例２をライン型展開方法により展開した等価テーブルの例である。図１２に示す等価テーブルでは、左横書き文書を読むように、各行を横方向にトレースすることによって、等価テーブルの内容を把握することができる。
【０１４６】
また、図１３は、ライン型展開方法による等価テーブルの展開構造を説明するため、図１２の配置データに代えて述部付きのロケーションステップを示す図である。なお、ロケーションステップの述部番号は、まず全要素の述部番号を初期化（０を設定）しておき、等価テーブルの各行を横方向にトレースし配置データが出現する際に、要素の述部番号をインクリメントさせる。同時に、当該要素が子孫要素を含む場合、当該子孫要素の述部番号をすべて初期化する。
【０１４７】
図１２および図１３に示すように、ライン型展開方法による等価テーブルのデータ構造は、単に出現する配置データを配置列Ｉと重複しないように配置行Ｊを求めているデータ構造である。したがって、後述するブロック型展開方法による等価テーブルよりも単純である。
【０１４８】
順序固定型ＸＭＬ文書をライン型展開方法によって展開した配置データは、等価テーブルのあるまとまった領域に配置され、一方で空白領域も発生する。元の文書に表形式のデータが連続して含まれる場合、等価テーブルでは表形式の右下部分と左上部分とが接する形で連なり、右下方向に下る出現パターンとなる。たとえば、図１３のＣ[５]とＤ[１]の関係がこれに相当する。また、先行する要素の出現順序と出現回数によって後続の要素の配置行は変化する。同一要素の出現回数が増加するにつれて行数が増加し、パス情報と配置データとの離隔が大きくなる。これらの事項は、配置データの参照や編集を行う際の欠点となる。
【０１４９】
（２．３）ライン型復元方法
ライン型復元方法は、処理対象範囲の配置テーブル（Ｊ，Ｉ）を対象として、列方向に走査し、ノードマークが出現する場合には開始タグ（Ｉ）を出力し、要素内容が出現する場合には、開始タグ（Ｉ）、要素内容および終了タグ（Ｉ）を連結して出力する。ノードマークまたは要素内容に属性などのデータが付加されている場合、これを分離して復元する。この際、階層値が減少する場合、終了タグを終了タグ用配列から取り出し出力する。
【０１５０】
図１４は、第１の復元方法であるライン型復元方法を示すフローチャートである。なお図１４では、「開始タグ付加データ」は開始タグ後タグ間文字データと開始タグ後コメント系データを示し、「終了タグ付加データ」は終了タグ後タグ間文字データと終了タグ後コメント系データを示す。
【０１５１】
まず、パス情報を読み取り（ステップ１４０１）、処理対象範囲９０６から復元する範囲を読み取り設定する。開始タグに対応する終了タグに関連する３項目のデータ（終了タグ、終了タグ後タグ間文字データ、終了タグ後コメント系データ）を階層値に応じて格納するための終了タグ用配列（スタック用配列）、および階層値Ｋ１、Ｋ２を初期化する（ステップ１４０２）。
【０１５２】
ステップ１４０３からステップ１４１３のループは、展開範囲を走査するための配置行Ｊと配置列Ｉによるループである。配置テーブル（Ｊ，Ｉ）が空である場合（すなわち、配置テーブル（Ｊ，Ｉ）が未配置である場合）には、ループを繰り返す（ステップ１４０４）。
【０１５３】
配置テーブル（Ｊ，Ｉ）に配置データが存在する場合、まずＫ１に現在の階層値（Ｉ）を格納する（ステップ１４０５）。Ｋ１が旧階層値Ｋ２未満（ステップ１４０６）となる場合、閉じていないタグに対応するために、既に格納されている終了タグ用配列よりＫ２−１からＫ１までの終了タグ、終了タグ後タグ間文字データおよび終了タグ後コメント系データを取り出し、出力する（ステップ１４０７）。
【０１５４】
ステップ１４０８で配置データにノードマークを含む場合、開始タグ、属性、開始タグ後タグ間文字データおよび開始タグ後コメント系データの出力を行う（ステップ１４０９）。また、終了タグ用配列に終了タグ、終了タグ後タグ間文字データ、終了タグ後コメント系データを積む（ステップ１４１０）。
【０１５５】
ステップ１４０８で配置データにノードマークを含まない場合、すなわち終端要素の要素内容を含む場合、開始タグ、属性、要素内容および終了タグを連結して出力する。この際、開始タグ後タグ間文字データ、開始タグ後コメント系データが存在する場合、これらを開始タグに続けて出力し、終了タグ後タグ間文字データ、終了タグ後コメント系データが存在する場合、これらを終了タグに続けて出力する（ステップ１４１１）。
【０１５６】
現在の階層値Ｋ１を旧階層値Ｋ２に格納し（ステップ１４１２）、ステップ１４０３からステップ１４１３のループを繰り返す。
【０１５７】
ループ終了後は、ステップ１４０７と同様に、終了タグ用配列よりＫ２−１から要素番号I_minの階層値までの終了タグ、終了タグ後タグ間文字データおよび終了タグ後コメント系データを取り出し、出力する（ステップ１４１４）。
【０１５８】
（２．４）ライン型展開方法とライン型復元方法のまとめ
ライン型展開方法とライン型復元方法の主な特徴は以下のとおりである。
１）ライン型展開方法およびライン型復元方法は、パス情報の順序固定性にかかわらず、すべてのＸＭＬ文書を対象とし展開と復元を行うことが可能である。
２）ライン型展開方法による等価テーブルは、左横書きの文書を読む場合と同様に、配置テーブルに展開された内容の把握を容易に行うことができる。
【実施例３】
【０１５９】
（３）ブロック型展開方法およびブロック型復元方法
ここでは、ＸＭＬ文書を等価テーブルにブロック型展開方法と、等価テーブルからＸＭＬ文書を復元するブロック型復元方法について説明する。ブロック型展開方法およびブロック型復元方法は、ＸＭＬ文書の入れ子をなす要素（部分木）を、等価テーブルにおいて入れ子をなすブロックに対応させて処理を行う方法である。
【０１６０】
ブロック型展開方法は、ＸＭＬ文書の要素について、開始タグと開始タグに対応する終了タグ間の部分木を特定し、特定した部分木を等価テーブルに入れ子をなすブロックとして展開する。また、ブロック型復元方法は、等価テーブルからブロックを特定しＸＭＬ文書を復元する方法である。等価テーブルは、親子要素の関係をブロックによる入れ子関係で確保し、また兄弟要素の出現順序をブロックの配置順序で確保する。なお、部分木をブロックとして等価テーブルに展開するため、「ブロック型」と表現している。
【０１６１】
前述のライン型展開方法では、配置データの出現順序を配置列と配置行によって確保している。したがって、先行する要素の出現順序と出現回数によって、後続する要素の配置行は変化する。ブロック型展開方法は、「順序固定型ＸＭＬ文書」の順序固定性を利用して、できる限り定位置に配置する方法である。
【０１６２】
ブロック型展開方法の対象とするＸＭＬ文書が「順序非固定型ＸＭＬ文書」である場合、展開することは可能であるものの、等価テーブルに展開する際に異タグ名の兄弟要素の出現順序が失われる。このため、展開した等価テーブルから元のＸＭＬ文書を正しく復元することは期待できない。
【０１６３】
ブロック型展開方法の対象とするＸＭＬ文書が「順序固定型ＸＭＬ文書」である場合、異タグ名の兄弟要素の出現順序が文書自体の順序固定性によって確保されるため、ブロック型展開方法による等価テーブルから、元のＸＭＬ文書をブロック型復元方法によって復元することができる。したがって、ブロック型展開方法とブロック型復元方法は、実質的に「順序固定型ＸＭＬ文書」を対象とした展開方法と復元方法となる。以下の説明では、ブロック型展開方法の対象とするＸＭＬ文書が「順序固定型ＸＭＬ文書」であることを前提とする。
【０１６４】
（３．１）ブロック型展開方法
ブロック型展開方法で対象とするＸＭＬ文書例として、図６に示す文書例２を使用する。図１５は、要素による入れ子構造を説明するために、各要素の範囲を囲み表示したものである。なお、非終端要素については番号を付しているが、終端要素の番号については図面の簡素化のため省略している。
【０１６５】
要素Ａ（要素１５０１）は、ＸＭＬ文書全体を示すルート要素であり、子要素Ｂ（要素１５０２など）および子要素Ｈを含む。要素Ｂ（要素１５０２など）は、子要素Ｃ、子要素Ｄおよび子要素Ｅ（要素１５０３など）を含む。さらに、要素Ｅ（要素１５０３など）は、子要素Ｆおよび子要素Ｇを含む。要素１５０４から１５１１についても同様である。要素は子要素を含む入れ子構造をなしており、要素を部分木として把握できる。
【０１６６】
ＸＭＬ文書中のすべての要素を対象とし展開する場合、ある着目する要素について開始タグで開いた際には、開始タグに対応する終了タグで閉じる操作を行うまで間、着目する要素の子孫要素が対象となる。閉じる操作を行った後に、着目する要素の弟要素が存在すれば弟要素を対象とし、着目する要素の弟要素が存在しなければ上位の要素に戻ることになる。
【０１６７】
つまり、子要素方向（深さ方向）の処理と、弟要素方向（幅方向）の処理とが発生し、子要素方向（深さ方向）の処理を優先して行うことが、すべての要素をもれなく処理することにつながり、また処理順序も一意となる。入れ子構造の深さが限定されていないＸＭＬ文書を対象とする場合、まず、ルート要素を処理開始時の着目する要素とし、子要素とその弟要素を再帰的に呼び出して処理を進めることになる。別の表現では、対象とするＸＭＬ文書を木とみなすと、木の外周をルート要素（根）から行きがけ順でなぞる際に出現する要素（節、葉）の順序が、処理順序となる。いずれの表現でも、処理順序はＸＭＬ文書中での要素の記述順序となる。
【０１６８】
「順序固定型ＸＭＬ文書」の特徴として、順序固定性があげられる。これは、複数の異タグ名の子要素を含む場合、同タグ名の子要素が連続して出現し、異タグ名の子要素が混合して出現することはない。たとえば、図１５の場合、いずれの要素Ｂも、出現しない子要素を除いて、子要素Ｃ、子要素Ｄ、子要素Ｅの順に出現する。このことは、「順序固定型ＸＭＬ文書」を等価テーブルに配置する際に、第１子の子要素を、親要素と同じ配置行に配置し、第２子以降の子要素を、兄要素の配置行（兄要素が複数の配置行となる場合はその最終行）の次行に配置することができることを示す。
【０１６９】
また、「順序固定型ＸＭＬ文書」の場合、混合内容モデル」や「任意内容モデル」を含まないため、非終端要素が終端要素となり得るケースは発生しない。このため、図７に示す終端要素の識別について、非終端要素と終端要素とを一意に区分することができる。また、字下げなどの空白文字を含めタグ間文字列は有意でない。
【０１７０】
図１６および図１７は、図１０のステップ１０１４に相当する第２の展開方法であるブロック型展開方法を示すフローチャートである。なお、ライン型展開方法とは、配置行Ｊの求め方が異なっており、配置列Ｉの求め方、配置データの取り扱い、および属性などの付加データの取り扱いについては同様である。ブロック型展開方法およびブロック型復元方法のフローチャートでは、簡素化のために付加データに関する記述を省略している。
【０１７１】
まず、構文リストの行範囲Ｌ０〜Ｌ１、展開開始行Ｊ０および要素番号ＩＢの初期値を設定する（ステップ１６０１）。ここで、構文リストの行範囲はルート要素の範囲を設定する。展開開始行Ｊ０は、展開対象のＸＭＬ文書を配置テーブルに配置する際の先頭行であり、既存データが存在しない場合はＪ０＝１、存在する場合はＪ０＝Ｊ_Max＋１とし既存データに追加する。要素番号ＩＢは、異タグ名の兄弟要素が複数存在する場合、最初に処理するための兄弟要素となる要素番号を示し、初期値としてルート要素を示すＩＢ＝１を初期値とする。次に、設定した初期値に基づいて要素分割処理を呼び出す（ステップ１６０２）。
【０１７２】
要素分割処理（ステップ１７００）は、ステップ１６０２から呼び出されるとともに、ステップ１７０７およびステップ１７０９からも呼び出され、構文リストの行範囲Ｌ０〜Ｌ１、配置行Ｊ０、要素番号ＩＢを引数とする再帰処理である。
【０１７３】
まず、行範囲Ｌ０〜Ｌ１間で最初に出現する開始タグＴと、開始タグＴに対応する終了タグＴを含む行Ｌを取得する（ステップ１７０１）。次に、処理対象の要素番号ＩＢの階層値Ｋから親階層の階層値（＝Ｋ−１）を求め、スタックされている親階層のパス（ＩＢがルート要素を示す場合には空）とタグＴからパスを作成し、要素識別用パスリストと照合することによって要素番号Ｉを特定する（ステップ１７０２）。  さらに、要素番号Ｉとその子孫要素となる列範囲がすべて空となる配置行Ｊを展開開始行Ｊ０から検索する（ステップ１７０３）。
【０１７４】
ステップ１７０４は、要素番号Ｉが終端要素か否かを判定する。要素番号Ｉが終端要素である場合は、タグＴ（Ｌ０〜Ｌ）の要素内容を配置テーブル（Ｊ，Ｉ）に配置する（ステップ１７０５）。
【０１７５】
ステップ１７０４で、要素番号Ｉが非終端要素である場合、ノードマークを配置テーブル（Ｊ，Ｉ）に配置し（ステップ１７０６）、要素番号Ｉの子要素を対象とした要素分割処理（Ｌ０＋１，Ｌ，Ｊ，Ｉ＋１）を呼び出す（ステップ１７０７）。
【０１７６】
ステップ１７０８は、引数の行範囲Ｌ０〜Ｌ１間をすべて処理したか否か行Ｌとの関係から判定する。残りの行が存在する場合、すなわち弟要素が存在する可能性があることになり、弟要素を対象とした要素分割処理（Ｌ＋１，Ｌ１，Ｊ０，ＩＢ）を呼び出す（ステップ１７０９）。残りの行が存在しない場合、要素分割処理を呼び出した処理に戻る。
【０１７７】
図１７のフローチャートによれば、第１子要素を親要素と同じ配置行に配置し、第２子以降の子要素を兄要素の配置行の次行に配置することができる。
【０１７８】
図１７のフローチャートでは、子要素および弟要素を処理するつど再帰処理が発生する。再帰処理の深さを制限することなく実行した場合、スタックメモリ不足による障害を引き起こす可能性が高くなる。
【０１７９】
子要素を対象とした再帰処理（ステップ１７０７）は、ＸＭＬ文書の階層の深さが増す際に呼び出されることになる。ＸＭＬ文書では階層の深さは、一般に１０未満であることが多く、多く見積もっても階層の深さは１００未満である。
【０１８０】
一方、弟要素を対象とした再帰処理（ステップ１７０９）は、同タグ名あるいは異タグ名にかかわらず、弟要素が存在する限り呼び出されることになる。たとえば、図書リストを想定した場合、図書名など同タグ名の要素が繰り返し出現することになる。この際、図１７のフローチャートに基づく処理では、繰り返し回数がある限界（たとえば、数千回）を超えた際に、スタックメモリ不足による障害を引き起こす可能性が高くなる。
【０１８１】
図１８のフローチャートは、弟要素の再帰処理を、同タグ名の要素による繰り返し処理と、異タグ名の要素による繰り返し処理とに置換したものである。なお、図１７と図１８において、ステップ１８００から１８０４はステップ１７００から１７０４に、またステップ１８０９から１８１１はステップ１７０６から１７０８に相当するステップであり、重複する説明は省略する。
【０１８２】
ステップ１８０５から１８０８は、同タグ名の要素の繰り返し処理を行うステップであり、タグＴの要素内容（Ｌ０〜Ｌ）を配置テーブル（Ｊ，Ｉ）に配置（ステップ１８０５）する。次の開始タグＴ２を取得し（ステップ１８０６）、同タグ名の終端要素が連続して出現する際に（ステップ１８０７）、配置行Ｊをインクリメントし、行範囲Ｌ０をＬ＋１とし（ステップ１８０８）、ステップ１８０５に戻る。
【０１８３】
ステップ１８１１から１８１２は、弟要素が存在する場合の繰り返し処理を行うステップである。引数の行範囲Ｌ０〜Ｌ１間をすべて処理したか否か行Ｌとの関係から判定し（ステップ１８１１）、残りの行が存在する場合、すなわち弟要素が存在する可能性がある場合、行範囲Ｌ０をＬ＋１とし（ステップ１８１２）、ステップ１８０１に戻る。
【０１８４】
図１８のフローチャートでは、再帰処理の深さは階層値に比例（階層値×１）することとなり、スタックメモリの使用量は制限されることになる。このため、スタックメモリ不足を発生する可能性は限りなく低くなり、スタックメモリによる制約を受けることなく、ＸＭＬ文書を展開することができる。以降の説明において特に断りがない限り、ブロック型展開方法は、図１８に示す要素分割処理によるものとする。
【０１８５】
（３．２）ブロック型展開方法の結果
図１９は、文書例２をブロック型展開方法による等価テーブルの例である。この等価テーブルの内容を速やかに理解するためには、ブロックの識別、ブロックによる入れ子構造、およびブロックによる入れ子構造とＸＭＬ文書の要素（部分木）による入れ子構造の関係を把握しておく必要がある。これらの事項について順に説明した後に、等価テーブルの内容の把握方法について説明する。
【０１８６】
図２０は、図１９の等価テーブルからブロックを識別した図である。図には、ブロックによる入れ子構造を説明するため、非終端要素となるブロックに番号を付しているが、終端要素となるブロックについては図面の簡素化のため番号を省略している。ブロックを識別する上でのポイントは下記のとおりである。
【０１８７】
１）非終端要素の出現を示すノードマークは、ブロックの開始行と開始列を示す。
２）ブロックの列範囲は、ノードマークとその子孫要素が展開されうる列範囲となる。すなわち、ノードマークの配置列Ｉから終端番号（Ｉ）までの範囲となる。
３）ブロックの行範囲は、ノードマークの子孫要素が配置されている行範囲となる。
４）終端要素は、１列１行の大きさのブロックとなる。
【０１８８】
なお、ブロック型復元方法では、上記３）ブロックの行範囲を、ノードマークの配置行から、同列の次のノードマークが親ブロック中に存在する場合、その直前行までとし、同列の次のノードマークが親ブロック中に存在しない場合、親ブロックの下端行までとする。このことによって、兄弟関係となるブロック間に間隙が生じることはない。たとえば、図２０のブロック２００４がすべて削除された場合でも、ブロック２００３とブロック２００５間に間隙が生じることはない。
【０１８９】
ブロックは入れ子構造をなすため、基本的には、上位階層のブロックから子孫階層の子ブロックに向かって識別する。図２０の各ブロックの入れ子関係は、以下のとおりである。
【０１９０】
ブロック２００１は、ＸＭＬ文書全体を示す要素Ａに対応するブロックであり、子要素Ｂ、子要素Ｈに対応するブロック（ブロック２００２など）を含む。ブロック２００２は、要素Ｂに対応するブロックであり、子要素Ｃ、子要素Ｄ、子要素Ｅに対応するブロック（ブロック２００３など）を含む。さらに、ブロック２００３は、要素Ｅに対応するブロックであり、子要素Ｆ、子要素Ｇに対応するブロックを含む。ブロック２００４から２０１１も同様であり、親要素に対応するブロックに囲まれるとともに、子要素を含む場合は子要素に対応するブロックを含むことになる。
【０１９１】
このように、ブロック型展開方法による等価テーブルは、ブロックによる入れ子構造として把握することができる。ここで、ブロックを区画する線は、要素番号の階層値に応じた等高線とみなすことができる。たとえば、要素Ａのブロックは階層値１の等高線となり、要素Ｂおよび要素Ｈのブロックは階層値２の等高線となる。つまり、ブロックの階層性は、パス情報の階層値を反映したものとなる。
【０１９２】
次に、ＸＭＬ文書の要素（部分木）による入れ子構造（図１５参照）とブロックによる入れ子構造との関係について説明する。図２０のブロック２００１から２０１１は、それぞれ図１５の要素１５０１から１５１１に対応している。つまり、図２０のブロックによる入れ子構造と、図１５に示すＸＭＬ文書の要素による入れ子構造とは、１：１の関係で対応する。また、終端要素を含めて、ブロックの出現順序と要素の出現順序についても、１：１の関係で対応する。
【０１９３】
以上のように、ＸＭＬ文書の要素による入れ子構造は、ブロック型展開方法による等価テーブルにおいて、ブロックによる入れ子構造として反映され、また出現順序も保たれている。等価テーブルの内容の把握は、まずブロックによる入れ子構造を把握することから開始することになる。たとえば、図１９のノードマーク"→[1]"、"→[2]"、"→[3]"に対応するブロックは、図２０のブロック２００１、２００２、２００３となり、各ブロックの内容は、次のように把握される。
【０１９４】
ノードマーク"→[1]"に対応する要素Ａ（ブロック２００１）は、４つの要素Ｂ（ノードマーク"→[2]"、"→[7]"、"→[9]"、"→[10]"に対応するブロック２００２、２００７、２００９、２０１０）と、２つの要素Ｈ（"h1"と"h2"を要素内容とするブロック）とから構成される。
【０１９５】
ノードマーク"→[2]"に対応する要素Ｂ（ブロック２００２）は、５つの要素Ｃ（"c1"〜"c5"を要素内容とするブロック）と、２つの要素Ｄ（"d1"と"d2"を要素内容とするブロック）と、４つの要素Ｅ（ノードマーク"→[3]"〜"→[6]"に対応するブロック２００３〜２００６）とから構成される。
【０１９６】
ノードマーク"→[3]"に対応する要素Ｅ（ブロック２００３）は、１つの要素Ｆ（"f1"の要素内容とするブロック）と、１つの要素Ｇ（"g1"の要素内容とするブロック）とから構成される。
【０１９７】
着目するブロックの内容を把握する際に、ブロックを構成する子ブロックに替わって、その子ブロックを構成する子孫ブロックで置換して把握することも可能である。しかし、たちまち複雑かつ難解となることが容易に想像される。このことは、言い換えると、着目するブロックについて構成する子ブロックのみを特定することが、速やかな内容の把握につながることを示している。子ブロックを特定する際には、子ブロックの大きさはかかわらず、着目するブロックの階層値よりも１つ大なる階層値の子ブロックのみを特定することが重要となる。
【０１９８】
着目するブロックに異タグ名の子ブロックを複数含む場合、パス情報の順序固定性により、必ず要素番号の小さい順かつ配置行の順に子ブロックが出現する。決して、異タグ名の子ブロックが混合して出現することはない。したがって、着目するブロックにおいて子ブロックの順序は一意に特定され、兄ブロックあるいは弟ブロックとして識別することができる。
【０１９９】
上記の要素Ａについては、要素Ｂのブロックが要素Ｈのブロックよりも必ず先に出現し、また、要素Ｂの子ブロックでは上位から下位に向かう順に子ブロックが出現することになる。
【０２００】
なお、ライン型展開方法では、「等価テーブルでは、左横書き文書を読むように、各行を横方向にトレースすることによって、等価テーブルの内容を把握することができる。」と記述した。ブロック型展開方法での同様の表現は、「着目するブロックについて、左から右に向かう縦書き文書を読むように、子ブロックを縦方向にトレースすることによって、子ブロックの順序を把握することができる。」となる。
【０２０１】
ブロック型展開方法による等価テーブルの内容を把握するためには、まず、着目するブロックを特定し、上記の方法で子ブロックの順序を把握する。子ブロックが終端要素である場合、そのまま配置データを把握する。子ブロックがさらに孫ブロックを含む場合、深さ方向の配置データを把握するために、子ブロックを着目するブロックとして移動し、子孫ブロックが存在しなくなるまで着目するブロックの移動を繰り返す。子孫ブロックが存在しない場合には、元の着目するブロックに復帰する。
【０２０２】
子ブロックに弟ブロックが存在する場合、幅方向の配置データを把握するために、弟ブロックが終端要素である場合はその配置データを要素内容として把握し、弟ブロックがさらに孫ブロックを含む場合は弟ブロックを着目するブロックとし、深さ方向の配置データを把握する。弟ブロックが存在しない場合、元の着目するブロックに復帰する。
【０２０３】
着目するブロックから子ブロックを特定し深さ方向の配置データを把握することと、復帰した子ブロックから弟ブロックを特定し幅方向の配置データを把握することとを、順次繰り返すことによって、着目するブロックの配置データを把握することができる。
【０２０４】
図２１は、図１９の配置データに代えて述部付きのロケーションステップを示す図である。ブロック型展開方法による等価テーブルについて、図２０のブロックによる区分と、図２１のロケーションステップによる順位付けとによって、要素の構成と順序をより明確にすることができる。
【０２０５】
ブロックの識別において前述したように、終端要素も１つのブロックとしてみなす。これは、たとえば要素Ｂおよび要素Ｈ、あるいは要素Ｃ、要素Ｄおよび要素Ｅのように、ブロックの大きさが異なる場合でも兄弟要素として同格の関係にあることによる。さらに、後述する連結処理によると、要素Ｂや要素Ｅのように子要素を伴う場合でも、これら要素を１つの終端要素として取り扱うことができる（図３２参照）。
【０２０６】
前述したようにブロック型展開方法では、ある親要素の第１子となる子要素を、親要素の出現を示すノードマークの配置行と同じ行に配置するため、ブロック型展開方法による等価テーブルには下記に示す２つの特徴がある。
【０２０７】
第１の特徴として、ある親要素の第１子から構成される「直系」に相当する子孫要素、すなわちロケーションステップの述部が[１]となる子孫要素は、先行して出現する子孫要素の種類と数に影響されることなく、その親要素と同じ行と配置されることになる。すなわち、第１子の子孫要素の配置行はそろうことになり、第１子の子孫要素については定位置性を有することになる。
【０２０８】
第２の特徴として、もともと表形式データからなるデータをＸＭＬ文書化し、さらにブロック型展開方法による等価テーブルでは、元の表形式データと類似した形状の表形式データとして展開されることになる。
【０２０９】
（３．４）ブロック型復元方法
ブロック型復元方法は、列範囲と行範囲とで区画される任意のブロックが、図２０に示すように、１つまたは複数の子要素からなるブロック（部分木）を含むものとして捉え、ノードマークの配置をもとにして終端要素が出現するまで列分割処理と行分割処理とを繰り返し分割する。一方の分割処理（行分割処理）で、ノードマークが出現する際に開始タグを出力し、終端要素が出現する際にその要素内容を出力し、分割処理から戻る際に終了タグを出力する。ブロック中に未処理範囲が残存する場合、未処理範囲を新たなブロックとしさらに分割する。処理対象範囲の全体を処理することによって、ＸＭＬ文書を復元する方法である。
【０２１０】
図２２から図２４および図２６から図２７は、第２の復元方法であるブロック型復元方法を示すフローチャートである。ここで、図２２は、ブロック型復元方法の開始処理を示す図である。図２３および図２４は、基本的な分割処理を説明するための図であり、図２６および図２７は、実用的な分割処理を示す図である。いずれの図も、フローチャートの明確化のため、属性などの付加データの取り扱いについて省略している。付加データが伴っている場合、ライン型復元方法（図１４参照）の場合と同様に取り扱うものとする。
【０２１１】
図２２は、ブロック型復元方法の開始処理を示すフローチャートである。まず、パス情報である階層値（Ｉ）とタグ名（Ｉ）を取得し、要素番号別に終端要素（Ｉ）と終端番号（Ｉ）の識別を行う（ステップ２２０１）。次に、処理対象範囲９０６から復元する範囲を読み取り（ステップ２２０２）、行範囲（Ｊ_min，Ｊ_max）と列範囲（Ｉ_min，Ｉ_max）を引数として列分割処理を呼び出す（ステップ２２０３）。
【０２１２】
列分割処理は、行範囲（Ｊ０〜Ｊ１）と列範囲（Ｉ０〜Ｉ１）からなるブロックを対象として、行範囲を固定した状態で、異タグ名の兄弟要素を要素番号順に分割し、分割した列範囲で行分割処理を呼び出すと処理と、残りの列範囲を対象とした列分割を行う処理とから構成される。
【０２１３】
図２３は、列分割処理の基本型を示すフローチャートである。フローチャートに従って説明すると、まず、ブロックを区分する列ＩＥを終端番号（Ｉ０）から特定し（ステップ２３０１）、配置テーブル（Ｊ０，Ｉ０）に配置データが存在することを確認した上で（ステップ２３０２）、細分割した列範囲（Ｉ０，ＩＥ）で行分割処理を呼び出す（ステップ２３０３）。
【０２１４】
ステップ２３０２で配置データが存在しない場合、あるいは行分割処理からの復帰した後に、未処理の列範囲（ＩＥ＋１，Ｉ１）に列幅があれば（ステップ２３０４）、さらに列範囲をＩＥ＋１〜Ｉ１と狭めて列分割処理を呼び出す（ステップ２３０５）。未処理の列範囲が存在しなければ、列分割処理を終了し戻る。
【０２１５】
行分割処理は、行範囲（Ｊ０〜Ｊ１）と列範囲（Ｉ０〜Ｉ１）からなるブロックを対象として、列範囲を固定した状態で、同名の兄弟ブロックを配置順に分割し、分割した行範囲からＸＭＬ文書を作成する処理と、残りの行範囲を対象とした行分割を行う処理とから構成される。ＸＭＬ文書を作成する処理は、終端要素を出力する処理と、非終端要素（子要素）を出力する処理とからなり、子要素を出力する処理は前記の列分割処理を介して行分割処理を呼び出す再帰処理となる。
【０２１６】
図２４は、行分割処理の基本型を示すフローチャートである。フローチャートに従って説明すると、まず、ＸＭＬ文書を作成する行範囲として、開始行ＪＳ＝Ｊ０、終端行ＪＥ＝Ｊ０と設定する（ステップ２４０１）。
【０２１７】
Ｉ０列が終端要素か否かを判定し（ステップ２４０２）、終端要素である場合には、開始タグ（Ｉ０）、配置テーブル（ＪＥ，Ｉ０）、終了タグ（Ｉ０）を連結し出力する（ステップ２４０３）。
【０２１８】
Ｉ０列が終端要素でない場合には、終端行ＪＥを求めるために、Ｉ０列に配置されている次のノードマークを行範囲Ｊ０＋１〜Ｊ１間で検索し、対象ブロック中に次のノードマークが存在する場合、次のノードマークの直前行をＪＥとし、対象ブロック中に次のノードマークが存在しない場合、ＪＥ＝Ｊ１とする（ステップ２４０４）。
【０２１９】
開始タグ（Ｉ０）の出力後（ステップ２４０５）に、分割した行範囲（ＪＳ，ＪＥ）と要素Ｉ０の子要素の列範囲（Ｉ０＋１，Ｉ１）を引数として列分割処理（ステップ２３００）を呼び出し（ステップ２４０６）、子要素を処理し復帰した後に終了タグ（Ｉ０）を出力する（ステップ２４０７）。
【０２２０】
対象ブロック中に未処理の行範囲（ＪＥ＋１，Ｊ１）が存在する場合（ステップ２４０８）、配置テーブル（ＪＥ＋１，Ｉ０）に値が存在することを確認し（ステップ２４０９）、行範囲をＪＥ＋１からＪ１と狭めて行分割処理を呼び出す（ステップ２４１０）。ステップ２４０８で未処理の行範囲が存在しない場合、あるいはステップ２４０９で値が存在しない場合、行分割処理を終了し戻る。
【０２２１】
列分割処理と行分割処理とは、行分割処理の出力処理を除外すると、両者は類似したフローとなる。さらに、未処理部分（弟要素）に対する分割処理を除外すると、次のように、非終端要素（子要素）に対する分割処理が明確になる。
【０２２２】
列分割処理は、要素（Ｉ０）の展開されうる列範囲の終端を、終端列ＩＥ＝終端番号（Ｉ０）として求め（ステップ２３０１）、対象とする列範囲を（Ｉ０，ＩＥ）として、行分割処理を呼び出す（ステップ２３０３）。
【０２２３】
行分割処理は、要素（Ｉ０）が終端要素でない場合、開始行ＪＳ（＝Ｊ０）に対応する終端行ＪＥを求め（ステップ２４０４）、対象とする行範囲を（ＪＳ，ＪＥ）とし、また列範囲を子要素の範囲（Ｉ０＋１，Ｉ１）として、列分割処理を呼び出す（ステップ２４０６）。
【０２２４】
ブロック型復元方法は、対象とするブロックを列分割処理に渡し、以降、対象とするブロックから子ブロックを特定し深さ方向の分割を繰り返すことと、復帰した子ブロックから弟ブロックを特定することを繰り返す。この過程で、対象とするブロック中の配置データをすべて特定し、ＸＭＬ文書を復元する。
【０２２５】
なお、対象とするブロックを列分割処理あるいは行分割処理のいずれに渡しても、通常、同じＸＭＬ文書が復元される。しかし、同一階層値の要素が複数含まれる場合、たとえば、後述する矩形領域を復元する場合、あるいは、パス情報の編集によって階層値＝１の要素（ルート要素）が複数となる場合、列分割処理を先に呼び出す必要がある。
【０２２６】
図２５は、図１９に示す等価テーブルから図２２から図２４に示すブロック型復元方法によってＸＭＬ文書（図６、文書例２参照）を復元する際の、処理番号（Ｎｏ）、処理、処理を呼び出す時の引数（Ｊ０，Ｊ１,Ｉ０，Ｉ１）、再帰処理の深さおよび対象となる配置データの変化状況を整理した図である。ここで、処理は列分割処理（Ｏｕｔ＿Ｉ）と行分割処理（Ｏｕｔ＿Ｊ）との区分である。引数（Ｊ０，Ｊ１）は対象とするブロックの行範囲を、引数（Ｉ０，Ｉ１）は対象とするブロックの列範囲を示す。再帰処理の深さは親処理から子処理を呼び出す際に１を加算した値である。また、対象とする要素・配置データは、列分割処理では対象とする要素について開始タグの書式で示し、行分割処理ではノードマークあるいは要素内容からなる配置データを示す。
【０２２７】
再帰処理の深さが単調に増加している範囲（たとえば、[１]〜[１０]）の処理では、対象とするブロックが順次に狭められていることが読み取れる。
【０２２８】
また、再帰処理の深さが変化していない部分（たとえば、[１８]）、あるいは減じている部分（たとえば、[３５]）での処理は、子処理を呼び出した親処理への復帰を１回あるいは複数回繰り返した後に、改めて新たな子処理を呼び出している部分である。親処理は、子処理よりも再帰処理の深さが１少ない直前の処理であり、たとえば、[３５]の場合は再帰処理の深さが４である[４]が親処理となる。この際、対象とするブロックは、行範囲または列範囲のいずれか一方が継続され、他方が狭められることになる。
【０２２９】
図２３および図２４のフローチャートでは、子要素、同タグ名の弟要素、および異タグ名の弟要素を処理するつど再帰処理が発生する。ブロック型展開方法の場合と同様に、再帰処理の深さを制限することなく実行した場合、スタックメモリ不足による障害を引き起こす可能性が高くなる。
【０２３０】
図２６のフローチャートは、図２３の異タグ名の弟要素を特定するための再帰処理（ステップ２３０５）を、開始端を示す変数ＩＳを用いて繰り返し処理（ステップ２６０６）に置換したものである。また、図２７のフローチャートは、図２４の同タグ名の弟要素による再帰処理（ステップ２４１０）を、終端要素の場合は終了端を示す変数ＪＥを用いて、また非終端要素の場合は開始端を示す変数ＪＳを用いて繰り返し処理（ステップ２７０６、ステップ２７１２）に置換したものである。図２３および図２４の弟要素を特定するための再帰処理を、図２６および図２７では開始端と終了端となる変数を用いて単純なループ（繰り返し処理）に置換したものであり、処理の考え方は図２３および図２４と同じである。
【０２３１】
図２８は、図２５と同様に、処理番号（Ｎｏ）、処理、処理を呼び出す時の引数（Ｊ０，Ｊ１,Ｉ０，Ｉ１）、再帰処理の深さおよび対象となる配置データについての変化状況を整理した図である。再帰処理の深さが単調に増加している範囲（たとえば、[１]〜[６]）では、対象とするブロックが順次に狭められていることが読み取れる。また、図２４の行分割処理では１つの処理で１つの配置データを対象とするが、図２７の行分割処理では１つの処理で同タグ名の兄弟要素となる複数の配置データを対象とする。
【０２３２】
図２３および図２４による処理の場合、再帰処理の深さは、階層値および兄弟要素数によって増加し、その最大深さは１６となる。一方、図２６および図２７による処理の場合、再帰処理の深さは、兄弟要素数には影響されず、その最大深さは８となる。再帰処理の深さは階層値に比例（階層値×２）することとなり、スタックメモリの使用量は制限されることになる。このため、スタックメモリ不足を発生する可能性は限りなく低くなり、スタックメモリによる制約を受けることなく、ＸＭＬ文書を復元することができる。以降の説明において特に断りがない限り、ブロック型復元方法は、図２６および図２７に示す列分割処理と行分割処理によるものとする。
【０２３３】
（３．５）矩形領域の復元
ブロック型復元方法では、復元の対象範囲を設定（ステップ２２０２）した後に、行分割処理と列分割処理とを実行している。このことは、任意の矩形領域を復元の処理対象範囲（９０６）として設定することが可能となることを示す。範囲の設定は、図２８に示す引数のほか、複数の親要素のブロック範囲にまたがった範囲でもよい。たとえば、行範囲＝１〜１０、列範囲＝３〜７とし復元した場合、要素Ａおよび要素Ｂのノードマークの有無にかかわらず、対象範囲の要素Ｃ〜要素Ｇが復元される。
【０２３４】
また、複数のＸＭＬ文書が１つの等価テーブルに展開されている場合、複数のＸＭＬ文書の展開範囲にまたがった範囲を設定することによって、複数のＸＭＬ文書を復元することができる。
【０２３５】
なお、上記のケースでは復元した文書に、見かけ上複数のルート要素が出現する可能性がある。復元した文書をＸＭＬ文書の断片として取り扱う際は、見かけ上複数のルート要素が出現しても問題ない。しかし、復元した文書を１つのＸＭＬ文書として取り扱う際には、ＸＭＬの仕様では複数のルート要素を認めていないため、復元した文書の全体をさらに上位階層のタグで囲む必要がある。たとえば、複数のルート要素のタグ名が「日報」である場合、すべての「日報」の要素を「月報」などの上位階層のタグ名で囲めばよい。
【０２３６】
（３．６）ブロック型展開方法とブロック型復元方法のまとめ
「順序固定型ＸＭＬ文書」を対象とするブロック型展開方法とブロック型復元方法の主な特徴は以下のとおりである。
１）ブロック型展開方法は、ＸＭＬ文書の要素について入れ子をなす部分木として特定し、特定した部分木について、部分木から作成したパスと要素識別用パスリストとを照合し要素番号を特定し対応する配置列を求め、第１子の子要素を親要素と同じ配置行に配置する。第２子以降の子要素を兄要素の最終配置行の次行に配置する。この展開方法によると、子孫要素の配置行がそろうことになり、子孫要素の定位置性が得られる。
２）ブロック型展開方法による等価テーブルは、パス情報に基づいて、入れ子をなすブロックとして展開される。親子要素の関係をブロックによる入れ子関係で確保し、また兄弟要素の出現順序をブロックの配置順序で確保している。
３）ブロック型復元方法は、入れ子をなすブロックから親子要素を特定し、ブロックの配置順序から兄弟要素を特定する過程で、ＸＭＬ文書を復元する。この復元方法によると、矩形領域、あるいは同一等価テーブルの複数のＸＭＬ文書を対象として復元することができる。
【実施例４】
【０２３７】
（４）等価テーブルを用いた解析・編集方法
ＸＭＬ文書の文書内容は、いずれの展開方法でも等価テーブルに配置され、表示装置１０６に表示される。このため、等価テーブルを用いてＸＭＬ文書の文書内容を参照や編集などを容易に行うことができる。特に、ＸＭＬ文書の元となるデータが表形式データである場合、ブロック型展開方法で得られる等価テーブルは、元の表形式データに類似したデータ構造となる。このため、参照や編集などを効率的に行うことができる。
【０２３８】
（４．１）配置データの解析
ＸＭＬ文書の文書内容について集計、分析あるいはグラフ化などの解析を行う際には、等価テーブル中のパス情報と配置データを解析材料とし、表計算ソフトウェアの各種機能を用いて、効率的に解析を行うことが可能である。なお、配置テーブルではすべて文字データとして取り扱っているため、数値データとして取り扱う場合には、文字データから数値データに変換する必要がある。
【０２３９】
（４．２）パス情報・配置データの編集
等価テーブルは、パス情報と配置データとを分離し配置している（図９参照）。等価テーブルの編集にあたっては、パス情報と配置データのそれぞれを別々に編集することが可能である。また、列の削除や移動などのようにパス情報と配置データとを同時に編集することも可能である。なお、復元する際には毎回パス情報を読み取っているため、パス情報を編集した場合でも、編集したパス情報が直ちに復元されるＸＭＬ文書に反映される。
【０２４０】
図２９は、図１９に示した等価テーブルを元にした編集例を示す図である。図２９では、図１９の等価テーブルから編集した部分を２重枠線で示している。具体的には、図１９の等価テーブルに対して以下に示す７項目の編集を行っている。なお、図３０は、編集後の図２９の等価テーブルに対応するロケーションステップを示す図であり、編集前のロケーションステップを示す図２１と比較されるものである。また、図３１は、図２９の編集後の等価テーブルをブロック型復元方法により復元したＸＭＬ文書を示す図であり、編集前の文書例２（図６参照）と比較されるものである。
【０２４１】
１）タグ名の変更
図２９では、図１９のタグ名"Ｂ"をタグ名"ＢＢ"に変更している。その結果、図３１に示す復元されたＸＭＬ文書のタグ名は、"ＢＢ"となる（図３１の２行目など）。
【０２４２】
２）要素の削除
図２９では、図１９の要素Ｄの削除（要素番号の削除）を行っている。その結果、図３１に示す復元されたＸＭＬ文書に要素Ｄは出現しない。
【０２４３】
３）要素の出現順序の変更
図２９では、図１９において同一階層の要素である要素Ｆと要素Ｇとを入れ替えている。その結果、図３１に示す復元されたＸＭＬ文書では、要素Ｇが要素Ｆの前に現れる（図３１の７〜８行目など）。
【０２４４】
４）要素の階層値の変更
図２９では、図１９の要素Ｈの階層値を２から３に変更している。その結果、要素Ｈのパスは"／Ａ／Ｈ"から"／Ａ／ＢＢ／Ｈ"となり、図３１に示す復元されたＸＭＬ文書では、要素Ｈは要素ＢＢに含まれる（図３１の１６〜１７行目）。
【０２４５】
５）配置データの変更
図２９では、図１９の要素Ｃの配置データ"ｃ１"を"ｃ１＿ｃ１"に変更している。その結果、図３１に示す復元されたＸＭＬ文書では、変更した配置データに対応する要素内容が"ｃ１＿ｃ１"となる（図３１の３行目）。
【０２４６】
６）ノードマークの移動
図２９では、要素ＢＢの７行目のノードマークを４行目へ移動している。その結果、移動前後では、要素ＢＢの子孫要素に対して親子関係および述部を大きく変化させることになる。たとえば、要素Ｃについて、図２１のＢ[１]／Ｃ[１]〜Ｃ[５]とＢ[２]／Ｃ[１]が、図３０のＢＢ[１]／Ｃ[１]〜Ｃ[３]とＢＢ[２]／Ｃ[１]〜Ｃ[３]になる。
【０２４７】
７）ブロック単位で配置データの移動
図２９では、９行目と１０行目の要素ＢＢとその子孫要素を入れ替えている。その結果、図３１に示す復元されたＸＭＬ文書では、要素ＢＢの子孫要素が入れ替わる（図３１の３５〜４０行目と４１〜４３行目）。
【０２４８】
上述の編集例は、ブロック型復元方法で得られる等価テーブルを対象とした基本的な操作を示している。なお、ライン型復元方法による等価テーブルの場合も基本的には同じ操作となる。ただし、ライン型復元方法の場合、編集例３）に示す列の入れ替え操作や、編集例６）に示すノードマークの入れ替え操作は、終了タグに付随する文字データやコメント系データの出現順序を乱すことになる。
【０２４９】
また、等価テーブルにおいて、タグ名の変更、タグ名の追加またはタグ名の削除などパス情報の編集を行うことによって、簡易な構造変換を行うことができる。たとえば、要素を名前空間によって識別することが必要となる場合、名前空間を示す接頭辞を現在のタグ名に付加すればよいことになる。さらに、スキーマを検討する際には、ひな形となるＸＭＬ文書を展開し、パス情報と配置テーブルを同時に変更することによって、実際のデータを伴った形でスキーマを検討することができる。
【０２５０】
なお、等価テーブルのデータ構造は、データ保持の観点からはもろいデータ構造である。たとえば、パス情報と配置データとの対応関係は、共通の要素番号で対応するだけの疎な結合関係である。また、要素の出現順序は、先祖要素や親要素のノードマークの配置位置によって決定される。タグ名、階層値、ノードマークの配置位置などに対する少しの変更でも、ＸＭＬ文書の文書構造や要素の出現順序を大きく変更させることになる。しかしながら、編集の観点からは少しの変更で簡単に編集できるデータ構造であると言える。
【０２５１】
（４．３）解析・編集処理のまとめ
ここでは、等価テーブルを用いた解析方法と編集方法について示した。編集方法の主な特徴は以下のとおりである。
１）ＸＭＬ文書の内容を視認性に富む表形式の等価テーブルに展開していることと、広く普及している表計算ソフトウェアを用いてことにより、等価テーブルを用いた解析や編集操作は、一般ユーザでも十分に可能である。
２）タグ名の変更、タグ名の追加または削除などパス情報の編集を行うことによって、簡易な構造変換を行うことができる。
【実施例５】
【０２５２】
（５）展開時の連結処理
（５．１）連結処理について
本願では、ある非終端要素に対して、その子孫要素をすべて連結した文字列を当該非終端要素の要素内容とみなすことによって、非終端要素を終端要素として取り扱う処理を、「連結処理」と呼ぶ。連結処理は、参照や編集などの対象となる部分が限られすべての要素を展開することが望ましくない部分を終端要素としてまとめる場合、あるいは部分的に「混合要素内容モデル」などの順序非固定となる要素を含むために「順序非固定型ＸＭＬ文書」に区分されるＸＭＬ文書に対して、順序非固定となる要素を終端要素としてまとめることによって、「順序固定型ＸＭＬ文書」として取り扱うことができる。
【０２５３】
なお、すべての要素を展開することが望ましくない具体的な例としては、編集対象としない要素あるいはテキスト形式で編集することが困難な要素の場合（たとえば、単なる数値情報や図形情報など）、展開することによってユーザのＸＭＬ文書の理解が妨げられる場合、あるいは特定要素の繰り返しが非常に多く含まれすべての要素を展開すると展開領域が著しく大きくなる場合などである。また、「順序固定型ＸＭＬ文書」として取り扱いが必要となる例としては、後述の等価テーブルを用いた構造変換処理を行う場合などである。
【０２５４】
（５．２）連結処理の手順
パス情報のある要素のタグ名を削除（または要素番号の削除）した場合、ライン型展開方法またはブロック型展開方法は削除されたタグ名を把握することができない。ある非終端要素に含まれるすべての子孫要素が削除された場合、当該非終端要素は終端要素として識別されることになり、ＸＭＬ文書中に削除されたタグ名の子孫要素が出現しても、終端要素の要素内容として展開されることになる（図１１のステップ１１１０、図１８のステップ１８０５参照）。
【０２５５】
図３２は、文書例２に対して、要素Ｅの子要素（Ｆ、Ｇ）のタグ名を削除（要素番号を削除）し、ブロック型展開方法による等価テーブルを示している。要素Ｅは、子孫要素（Ｆ、Ｇ）が連結された要素内容となる。また、図３３は、配置データのロケーションステップを示した図である。
【０２５６】
図３４は、図３２の等価テーブルからＸＭＬ文書を復元した図である。図３４の１０行目は、要素Ｅの連結された要素内容がそのまま復元されている。なお、図３４のＸＭＬ文書は、文書例２とは字下げと改行の位置とが異なっており、両文書の空白文字を無視した場合、ＸＭＬ文書として等価な文書である。
【０２５７】
また、連結処理を行った場合、すべての要素を展開する場合と比べて、等価テーブルの領域が小さくなるとともに展開処理および復元処理の処理速度が向上する効果がある。
【０２５８】
（５．３）連結処理のまとめ
連結処理の主な特徴は以下のとおりである。
１）参照や編集などの対象となる部分が限られており、すべての要素を展開することが望ましくない場合、展開不要部分の連結処理が有効となる。
２）「順序非固定型ＸＭＬ文書」の順序非固定部分を連結処理することにより、「順序固定型ＸＭＬ文書」として取り扱うことができる。
３）連結処理は、すべての要素を展開する場合と比べて、等価テーブルの領域が小さくなるとともに展開処理および復元処理の処理速度が向上する効果がある。
【実施例６】
【０２５９】
（６）ＸＭＬ文書の構造変換
（６．１）ＸＭＬ文書の構造変換方法
異なる組織あるいはシステムでＸＭＬ文書による情報交換を行う際には、共通するスキーマに基づいたＸＭＬ文書である必要がある。また、十分に検討されたスキーマでも、内容の拡充や外的環境の変化などの要因によって、スキーマの更新がなされる。共通するスキーマあるいは更新されたスキーマに対応するためのＸＭＬ文書の変更は、ＸＭＬ文書の構造変換に相当する。以下では、類似するスキーマに基づいたＸＭＬ文書について、等価テーブルを用いて構造変換を行う方法について説明する。
【０２６０】
ここで、ＸＭＬ文書の構造変換について、変換の可逆性の観点から区分すると次のとおりである。
１）双方向変換：ＸＭＬ文書ＡからＸＭＬ文書Ｂへの変換、およびその逆方向の変換を行うような場合、双方向の変換となる。この場合、基本的には、文書に含まれる全要素が変換の対象となる。具体例を示すと、異なる組織間あるいはシステム間でのスキーマの相違およびスキーマの更新時に行われる構造変換が、これに該当する。
２）一方向変換：ＸＭＬ文書Ａの部分的な要素を、１つまたは複数のＸＭＬ文書Ｂに転送するような場合、一方向の変換となる。この場合、ＸＭＬ文書ＢからＸＭＬ文書Ａを復元することはできない。
【０２６１】
対象とするＸＭＬ文書は、双方向変換の場合には、変換元のＸＭＬ文書と変換先のＸＭＬ文書とが、「順序固定型ＸＭＬ文書」であることを前提とする。変換元のＸＭＬ文書および変換先のＸＭＬ文書がともに順序固定型スキーマに基づく場合、両者の順序固定型スキーマから固定したパス情報、および両者の対応関係を定めたパス情報対応表を、作成することができる。
【０２６２】
一方向変換の場合、変換元のＸＭＬ文書は「順序固定型ＸＭＬ文書」であることを前提とするが、変換先のＸＭＬ文書は特定のスキーマに基づかない「整形式ＸＭＬ文書」であってもよい。なお、変換元のＸＭＬ文書が「順序非固定型ＸＭＬ文書」の場合、前述の「連結処理」によって「順序固定型ＸＭＬ文書」として取り扱える場合は除き、固定したパス情報が得られないため、基本的に適用できない。
【０２６３】
図３５（ａ）から（ｃ）は、３つのパス情報の例を示している。図３５（ａ）に示すパス情報３５０１は、文書例２のパス情報である。図３５（ｂ）に示すパス情報３５０２は、パス情報３５０１に対して要素Ｘ、ＹおよびＺを追加したパス情報である。また、図３５（ｃ）に示すパス情報３５０３はＨＴＭＬのタグ名を用いたパス情報の例である。
【０２６４】
図３６は、パス情報対応表の例を示している。図３６のパス情報対応表は、３つのパス情報３５０１から３５０３の間における要素番号の対応関係を定義したものである。たとえば、共通番号８は、パス情報３５０１の５番目の要素（Ｅ）と、パス情報３５０２の７番目の要素（Ｅ）と、またパス情報３５０３の６番目の要素（ｔｒ）とが対応することを示している。
【０２６５】
パス情報対応表は、複数のパス情報を対象として、パス情報３５０１とパス情報３５０２の関係のように、同一または類似する内容の要素について要素番号で整理し示したものである。また、上記パス情報３５０３のように、ＨＴＭＬのタグ名からなるパス情報との対応関係も含めることができる。ただし、要素番号７と８の「ｔｄ」ように、兄弟要素で同一のタグ名が出現し得るため、パス情報３５０１からパス情報３５０３への一方向の変換処理となる。
【０２６６】
図３７は、パス情報対応表を参照して実行する構造変換を示す概念図を示している。パス情報対応表３７０１を参照することによってパス情報Ａとパス情報Ｂの要素の対応関係を得ることができる。ＸＭＬ文書Ａをブロック型展開方法により展開した配置領域Ａを列単位（要素番号単位）で取得し、配置領域Ｂの対応する列に転送する。等価テーブルＢをブロック型復元方法によりＸＭＬ文書Ｂを復元することによって、ＸＭＬ文書Ａから構造変換されたＸＭＬ文書Ｂを得ることができる。
【０２６７】
（６．２）構造変換結果
図３８は、文書例２（パス情報３５０１）の展開内容（図１９参照）を、パス情報３５０２を持つ等価テーブルに変換して得られる等価テーブルを示す図である。図３８の等価テーブルの復元結果は、文書例２のＸＭＬ文書と同じ内容となる。当然のことながら、パス情報３５０１を持つ等価テーブルに存在していない要素（Ｘ、Ｙ、Ｚ）はパス情報３５０２を持つ等価テーブルにも存在しない。逆に、パス情報３５０２を持つ等価テーブルからパス情報３５０１を持つ等価テーブルに変換する際には、パス情報３５０２を持つ等価テーブルに要素（Ｘ、Ｙ、Ｚ）が存在する場合でも、これらの要素は伝達されず、構造変換後の等価テーブルから欠落することになる。
【０２６８】
図３９は、文書例２（パス情報３５０１）の展開内容（図１９参照）を、パス情報３５０３を持つ等価テーブルに変換して得られる等価テーブルに、さらに変更を加えた例を示す図である。パス情報３５０３はＨＴＭＬ文書の断片を作成するためのパス情報であり、ＨＴＭＬ固有のタグ名からなる。図３９において、２重線枠は等価テーブルの変換後に変更を加えた内容を示している。具体的には、要素番号３の「ｔａｂｌｅ」にノードマークと線の太さを示す属性（「→{At{border="1"}}」）、要素番号６の「ｔｒ」の空部分にノードマーク（「→」）、および要素番号７から８の「ｔｄ」の空部分に「−」を追加している。
【０２６９】
図４０（ａ）は、図３９に示す等価テーブルをブロック型復元方法によって復元したＸＭＬ文書を示している。図４０（ｂ）は、図４０（ａ）のＸＭＬ文書をＨＴＭＬブラウザによって表示した際の表示イメージを示している。図４０（ａ）および（ｂ）に示すように、パス情報３５０１に基づいたＸＭＬ文書から、ＨＴＭＬ文書の断片を作成することができる。なお、図３９のパス情報に連続する同階層の要素「ｔｄ」が存在すること、表示を整えるための配置データが追加されていることから、図４０（ａ）に示す復元リストから元ＸＭＬ文書に戻すことはできない。一般に、ＸＭＬ文書からＨＴＭＬなどの表示用言語への変換は、一方向の変換となる。
【０２７０】
（６．３）構造変換の適用性
上述したパス情報とパス情報対応表を用いた構造変換の例は、異なるスキーマが複数存在する際に、あるスキーマに基づいたＸＭＬ文書から異なるスキーマに基づいたＸＭＬ文書への構造変換を、簡素化することができることを示す。ただし、完全な構造変換は期待できない。
【０２７１】
たとえば、定形書式の文書やデータを中心とするビジネス文書について、同種の文書である場合、異なる組織でもＸＭＬ文書の基本的項目についてはおおむね一致する。相違点は、要素の入れ子構造、要素の出現順序、新規要素、要素と属性の使い分け、タグ名、属性名などである。上述した構造変換方法は、これらの相違点の中で、要素の入れ子構造、要素の出現順序、タグ名の相違について吸収することができる。しかし、新規要素、要素と属性の使い分け、属性名の相違などについては、吸収することができない。
【０２７２】
このため、新規要素に対するデータの補完、あるいは要素と属性の使い分けの調整などが必要となる。ただし、上述した構造変換方法は、変換先となるＸＭＬ文書の元（ソース）を作成することになるため、変換先となるＸＭＬ文書を新規に作成することに比べて、効率的な変換作業を行うことができる。すなわち、上述した構造変換方法は、正確には構造変換を支援する方法と言える。なお、より効率的な変換を行うためにＸＳＬＴを併用してもよい。
【０２７３】
一般のユーザは、類似したスキーマに基づいた複数のＸＭＬ文書が存在する際に、これらのＸＭＬ文書を等価テーブルに展開することによって、パス情報の対応関係を把握することができる。このことは、一般のユーザでも、パス情報対応表を作成し、パス情報とパス情報対応表を用いたＸＭＬ文書の構造変換を行うことができることを示す。以下に、上述したパス情報とパス情報対応表を用いた構造変換の応用例を示す。
【０２７４】
（例１）１つのＸＭＬ文書から関連する１つまたは複数のＸＭＬ文書を作成することができる。この際、変換先となるＸＭＬ文書は、図４０に示すように表示用言語に基づいたＸＭＬ文書であってもよい。
【０２７５】
（例２）複数のＸＭＬ文書が１つの等価テーブルに展開されている場合、複数のＸＭＬ文書を同時に変換すること可能である。また、複数のＸＭＬ文書を取りまとめて１つのＸＭＬ文書にすることも可能である。たとえば、「日報」をルート要素する複数のＸＭＬ文書が１つの等価テーブルに展開されている場合、「日報」から「月報」で必要とする項目（要素）を抽出し、両者のパス情報とパス情報対応表とを作成した上で構造変換を行い、「月報」をルート要素とする１つのＸＭＬ文書に取りまとめることができる。
【０２７６】
（６．４）構造変換のまとめ
ここで説明したパス情報とパス情報対応表を用いた構造変換方法の特徴は以下のとおりである。
１）ユーザはパス情報対応表を作成することによって、ＸＭＬ文書の構造変換を行うことができる。
２）１つのＸＭＬ文書から関連する１つまたは複数のＸＭＬ文書を作成することができる。
３）複数のＸＭＬ文書が１つの等価テーブルに展開されている場合、複数のＸＭＬ文書を取りまとめて１つのＸＭＬ文書にすることも可能である。
【実施例７】
【０２７７】
（７）非構造化文書のＸＭＬ文書化方法
（７．１）定形書式の非構造化文書のＸＭＬ文書化について
一般に、ＸＭＬ文書を作成する際には、まず、ＸＭＬ文書の材料となる文書またはデータを収集する必要がある。次に、従来の方法では、ＸＭＬエディタや特定のスキーマに基づいたＸＭＬ文書を作成することのできる専用プログラムを用いて、ＸＭＬ文書を作成することになる。この際、材料となる文書またはデータを入力領域にコピーアンドペーストを併用した入力作業を行い、ＸＭＬ文書を作成することになる。
【０２７８】
本発明による等価テーブルを用いて配置データを編集し、ＸＭＬ文書を作成する方法でも、ＸＭＬ文書の材料を収集する作業と入力作業については上記の場合と同様である。ライン型復元方法による場合、先行する要素によって後続する要素の配置行が決定されるため、基本的には要素の出現順に配置データを作成する必要があり、要素の挿入が発生する際には後続する要素の配置行をすべて移動させる必要がある。また、ブロック型復元方法による場合、ＸＭＬ文書の要素による入れ子構造と等価テーブルのブロックによる入れ子構造を理解した上で、適切にノードマークを配置する必要がある。いずれの方法であっても、ＸＭＬ文書の作成はユーザにとって労力とコストのかかる作業となる。
【０２７９】
一方、ビジネス文書やデータの多くは、ワードプロセッサや表計算ソフトウェアを用いて、一定の書式で既に作成されていることが多い。また、ビジネス用の専用プログラムで用いられるデータは、データ互換性を考慮して、データをカンマで区切るＣＳＶ形式（Comma Separated Values）のテキストデータで記録されることが多い。ＣＳＶ形式とは異なるファイル形式も多く存在するが、ＣＳＶ形式に変換できるファイル形式も多い。
【０２８０】
本願では、表計算ソフトウェア用いて作成された定形書式の文書やデータや、ＣＳＶ形式に代表されるデータファイルを「定形書式の非構造化文書」として捉える。これらの文書やデータやデータファイルを対象としたＸＭＬ文書化の方法について説明する。
【０２８１】
（７．２）ワークシート上の文書・データのＸＭＬ文書化
（７．２．１）ワークシート上の文書・データの特徴
ワークシート上の文書やデータ（以下、「シート情報」と記す）は、組織や個人で独自に作成され、目的や要求に応じて改変されながら継続的に利用される。独自の構造をもつ場合でも、文書やデータはある一定の位置あるいは領域に配置される。以下では、シート情報のこのような性質を、文書やデータの配置に「定位置性がある」と表現する。
【０２８２】
シート情報は、文書やデータの記載位置を規定する枠組みがスキーマに対応し、定位置性を持って一定の位置または領域に記載された文書やデータがＸＭＬ文書の要素内容に対応する。このため、シート情報を「順序固定型の文書」とみなすことができる。したがって、シート情報の定位置性と、ブロック型展開方法による等価テーブルに配置される配置データの定位置性とを利用し、シート情報から等価テーブルの配置データへの対応付けを行うことによって、シート情報からＸＭＬ文書へ変換することが可能となる。また、逆方向の対応付けを行うことによって、ＸＭＬ文書からシート情報への変換も可能となる。
【０２８３】
（７．２．２）ＸＭＬ文書化の方法
図４１は、シート情報からＸＭＬ文書へ変換時のデータの流れを示すが概念図である。まず、シート情報を含んでいるワークシートの未使用領域に、等価テーブルと同じ構造のテーブル（以下、「写像テーブル」と記す）を配置する。シート情報４１０１から写像テーブル４１０２への表計算ソフトウェアのリンク機能を用いた対応付け、写像テーブル４１０２から等価テーブル４１０３へ値の複写、さらに等価テーブル４１０３からＸＭＬ文書４１０４へ変換する。
【０２８４】
シート情報４１０１と写像テーブル４１０２と対応付けは、シート情報の表題情報部分４１０１（ａ〜ｂ）を写像テーブル４１０２（ａ〜ｂ）に対応させ、シート情報の表形式部分４１０１ｃを写像テーブルの表形式部分４１０２ｃに対応させることによって行われる。対応付けの後に、写像テーブル４１０２から等価テーブル４１０３に値を複写し、さらに、ブロック型復元方法によってＸＭＬ文書４１０４を作成する。なお、写像テーブル４１０２を介さずに直接シート情報４１０１と等価テーブル４１０３の対応付けを行うことも可能である。この場合、ワークシートの管理が非常に煩雑となるとともに、再利用することが困難となる。
【０２８５】
ＸＭＬ文書４１０４からシート情報４１０１を得る場合は、基本的に上述した処理と逆方向の処理を行えばよい。この操作によって、ユーザが従来使用しているワークシートを用いて、ＸＭＬ文書の文書内容の確認、参照、印刷などの操作を行うことができる。
【０２８６】
なお、シート情報４１０１あるいはＸＭＬ文書４１０４が多重の繰り返しを含む場合、ある程度単純な構造となるまで両者を細分化し、細分化した文書やデータの部分的な変換を繰り返し行い、ＸＭＬ文書の断片を作成し、組み立てる方法も有効となる。
【０２８７】
シート情報４１０１からＸＭＬ文書４１０４への対応付けを行う際の要点は以下のとおりである。
１）写像テーブル４１０２でノードとなる要素については、子孫要素が存在する際にノードマークを記入する。繰り返し要素が出現する際は、繰り返し回数を固定し配置行を求める。
２）シート情報４１０１の一部情報がＸＭＬ文書４１０４で属性値として表現される場合、属性として文字列化する。属性が複数存在する場合、一定の順序で文字列の組み立てを行う。
３）ＸＭＬ文書４１０４で書式指定のある数値情報は、書式の変換を行った後に文字列化する。
【０２８８】
また、ＸＭＬ文書４１０４からシート情報４１０１への対応付けを行う際の要点は以下のとおりである。
１）繰り返し要素が出現する際は、繰り返し回数を固定した配置行に対応付けを行う。
２）ＸＭＬの仕様では複数の属性を含む場合、属性の順序を規定していない。したがって、属性名をもとに属性値を取り出し、対応付けする工夫が必要となる。
３）等価テーブル４１０３では文字列と数値を区別していないため、シート情報４１０１が数値情報である場合に数値化する。
【０２８９】
（７．３）ＣＳＶ形式ファイルのＸＭＬ文書化
（７．３．１）ＣＳＶ形式データの特徴
ＣＳＶ形式は、個々のプログラムで一定の順序で、データをカンマで区切って列記したデータ形式である。ＣＳＶ形式ファイルでは、データの繰り返しや分岐を、次に示す一定の表現で制御する。１）データの繰り返し回数の記述、２）データの繰り返し終端を示すマークの挿入、３）データ内容の開始を示すマークによる分岐、４）データ内容を複数ファイルへの分散などである。
【０２９０】
データの表現方法が上記１）または２）から構成されるＣＳＶ形式データは、ＸＭＬの「順序型の要素内容モデル」に相当する。また、データの表現方法が上記１）または２）に加えて３）または４）を用いて構成されたＣＳＶ形式データは、ＸＭＬの「選択型の要素内容モデル」に相当する。
【０２９１】
「選択型の要素内容モデル」を含むＣＳＶ形式データの場合でも、３）または４）はルート要素に近い所での選択となるため、ＣＳＶ形式データをワークシート上に展開し、一定の位置または領域に再配置することによって、「順序型の要素内容モデル」として扱うことができる。その結果、ＸＭＬ文書とＣＳＶ形式データとの変換が可能となる。
【０２９２】
ＣＳＶ形式データをワークシートに展開し再配置した際のデータ配置の定位置性と、ブロック型展開方法による等価テーブルにおける配置データの定位置性とを利用して、両者の対応付けを行うことによって、ＣＳＶ形式データからＸＭＬ文書へ変換することができる。またＸＭＬ文書からＣＳＶ形式データへの変換も可能である。
【０２９３】
（７．３．２）ＸＭＬ文書化の方法
図４２は、単一のＣＳＶ形式ファイル４２０１または複数のＣＳＶ形式ファイル群４２０２から、写像テーブル４２０５までのデータの流れを示す図である。表計算ソフトウェアのＣＳＶ形式ファイル読み込み機能を用いて、ＣＳＶ形式ファイル４２０１またはＣＳＶ形式ファイル群４２０２のデータをＣＳＶ変換用ワークシート４２０３に読み取る。
【０２９４】
ユーザは、ＣＳＶ形式データのデータ構造とデータ内容を参照することにより、ＣＳＶ変換用ワークシート４２０３の読み取りデータをシート情報４２０４に再配置する。
【０２９５】
ワークシート上の文書やデータをＸＭＬ文書化する場合と同様に、ＸＭＬ文書の作成に必要なデータは、シート情報４２０４に含まれるデータから、表計算ソフトウェアのリンク機能を用いて、写像テーブル４２０５に対応付けすることによって得ることができる。最後に、写像テーブル４２０５から等価テーブル（不図示）に値を複写し、ブロック型復元方法によってＸＭＬ文書を作成する。
【０２９６】
なお、ＣＳＶ形式データまたはＸＭＬ文書が、多重の繰り返し構造や多数の分岐構造などにより非常に複雑な構造を有する場合、ある程度単純な構造となるまで両者を細分化し、細分化した文書やデータの部分的な変換を繰り返し行い、最終的に組み立てる方法が有効となる。ここで説明した方法によれば、一般ユーザでも、ＣＳＶ形式ファイルからＸＭＬ文書を作成することができる。
【０２９７】
また、ＣＳＶ形式ファイルのデータ構造が明確な場合、写像テーブル４２０５からシート情報４２０４へ向かう対応付けを行うことができる。ＸＭＬ文書をブロック型復元方法によって展開した等価テーブルを写像テーブル４２０５に複写し、対応付けによってシート情報４２０４に表示される値をＣＳＶ変換用ワークシート４２０３に再配置することによって、ＸＭＬ文書の文書内容をＣＳＶ形式ファイルに変換することが可能となる。
【０２９８】
（７．４）非構造化文書のＸＭＬ文書化のまとめ
定形書式の非構造化文書のＸＭＬ文書化によって次の効果が得られる。
１）ユーザが使用している独自の構造と書式をもつワークシートにデータを入力し本来の処理を行うと同時に、ＸＭＬ文書を作成することができる。
２）ＸＭＬ文書の要素の確認、参照、印刷などの操作を、ユーザが使用している独自の構造をもつワークシートで行うことができる。
３）ＣＳＶ形式ファイルを入出力データとして用いる従来のプログラムでも、等価テーブルを介してＸＭＬ文書を取り扱うことができる。
【実施例８】
【０２９９】
（８）等価ファイルの作成方法
（８．１）等価データと等価ファイルについて
ＸＭＬ文書を対象としてある処理を行うプログラム（以下、「応用プログラム」と記す）が、等価テーブルに展開された配置データを利用する際には、下記の２事項が問題となる。
【０３００】
第１に、応用プログラムに、ライン型展開方法またはブロック型展開方法を実行するプログラムを組み込むことは、２次元配列を事前に用意する必要がある。しかしながら、２次元配列の大きさを適切に決めることは一般に困難であるため、許容されるメモリを用いて巨大な２次元配列を用意し処理を行うことになる。このことは、目的とする処理で使用するメモリに加えて、さらに多くのメモリが必要となる。また、巨大な２次元配列がメモリ中に長く存在することは望ましくない。
【０３０１】
第２に、配置テーブルは、配置データが配置されていない空の配列要素を非常に多く含む、疎な２次元配列である。たとえば、ある値を特定の列から検索する際に、空の配列要素が連続する場合でも、対象範囲の配列要素をすべて検索しなくてはならず、効率的であるとは言い難い。特に、ＸＭＬ文書中に特定の要素を多く含む場合、配置テーブルの行数は増大し、上記の問題は顕著化する。
【０３０２】
このため、ライン型展開方法またはブロック型展開方法を行うプログラムが、配置テーブルから配置データを検出し、リスト化した１次元配列（以下、「等価データ」と記す）またはファイル（以下、「等価ファイル」と記す）を作成することによって、応用プログラムは、等価データまたは等価ファイルを受け取り、処理を行うことができる。
【０３０３】
等価データまたは等価ファイルを用いることによって、応用プログラムを簡素化することができる。また逆に、応用プログラムが等価データまたは等価ファイルを作成し、ライン型復元方法またはブロック型復元方法を実行するプログラムが、等価データまたは等価ファイルのいずれかを受け取ることによって、ＸＭＬ文書を作成することも可能となる。
【０３０４】
図４３は、上記の説明を補足するために、従来技術も含め、ＸＭＬ文書（データ）と応用プログラムとのデータの流れを示す図である。なお、図４３中の展開・復元方法は、上述したライン型展開方法とライン型復元方法、あるいはブロック型展開方法とブロック型復元方法を示す。また、リスト化処理は、後述する等価テーブルから等価データまたは等価ファイルを作成する処理およびその逆方向の処理を示す。
【０３０５】
図４３（ａ）は、ＸＭＬ文書（データ）を取り扱うためにＤＯＭを組み込んだ応用プログラムの例を示す（従来技術）。この場合、応用プログラムは、ＤＯＭ木にアクセスしながら処理を行うことになる。
【０３０６】
図４３（ｂ）は、等価テーブルを用いて処理を行う例を示している。この場合、等価テーブルの配置データを対象として、表計算ソフトウェアの各種機能を用いてユーザが操作する、あるいは等価テーブルにアクセスできるプログラム言語を用いて応用プログラムを組み込み、処理を行うことになる。
【０３０７】
図４３（ｃ）は、等価テーブルと等価な内容をもつ等価データまたは等価ファイルを用いて処理を行う例を示す。応用プログラムは、等価データまたは等価ファイルとの入出力インターフェースを介してデータの受け渡しを行う。この場合、応用プログラムは、目的とする処理内容に、入出力インターフェースを付加すればよく、応用プログラムは簡素化される。
【０３０８】
（８．２）等価データと等価ファイルの作成方法
等価データを作成する場合、まず、配置テーブルに対応する、要素番号、行番号および配置データを格納するための３つの１次元配列を用意する。処理対象範囲に基づいて配置テーブルの対象領域を決定し、列方向（横方向）または行方向（縦方向）のいずれかを優先して対象領域を走査し、配置データ（空でない配列要素）を検出し、その要素番号、行番号および配置データをそれぞれの１次元配列に格納する。
【０３０９】
ここで、優先する方向とは、対象領域を走査する際の要素番号および行番号からなる二重ループにおいて、内側のループの走査方向を指す。たとえば、行方向を優先する走査の場合、同列番号の開始行から終了行までの行方向の走査を、各列で繰り返し行うことになる。また、走査の方向は、後続の処理によって適切な方向とする。たとえば、検索を主体とする処理の場合、行方向を優先した等価データの作成が有利となる。なお、要素番号と列番号は、パス情報を変更していない場合には共に同じ値となり、要素番号を列番号とみなすことができる。
【０３１０】
図４４は、図１９に示すブロック型展開方法による配置テーブルを、行方向を優先して走査し、作成した等価データの内容を示す図である。当然のことながら、等価データは、要素番号によって整列されており、また同一の要素番号の等価データは行番号によって整列されている。
【０３１１】
等価ファイルの書式は、等価テーブルと等価ファイルとのデータ変換が容易であることと、応用プログラムが等価ファイルを容易に取り扱えることとが条件となる。このため、等価ファイルの書式をＣＳＶ形式とする。さらに、データ内容を示すタグを用いて形式的にＸＭＬ形式とする。
【０３１２】
ルート要素、配置テーブルに関する情報、パス情報およびデータ情報のタグ名を、それぞれ「ｘｍｌ＿ｃｏｎｖ」、「ｉｎｆｏ」、「ｐａｔｈ」および「ｄａｔａ」とする。ＸＭＬ文書とすることによって、データ内容の追加、データ順序の変更およびインターネット上でデータ交換が容易となる。なお、ここで示す等価ファイルの書式やタグ名は一例であって、限定されるものではない。
【０３１３】
等価ファイルを作成する場合、まず、配置テーブルに関する情報とパス情報とを等価ファイルに出力する。次に、等価データを作成する場合と同様に、処理対象範囲に基づいて配置テーブルの対象領域を決定し、配置テーブルに対して列方向（横方向）または行方向（縦方向）のいずれかを優先して走査し、配置データ（空でない配列要素）を検出し、その要素番号、行番号および配置データを、等価ファイルに追加出力する。
【０３１４】
配置テーブルに関する情報「ｉｎｆｏ」は、等価ファイル作成時の対象範囲を示し、列範囲について「"Ｃｏｌ＝"，開始列，終了列（改行）」、行範囲について「"Ｒｏｗ＝"，開始行，終了行（改行）」の書式で出力したものである。展開方法や走査方向などの項目を、後続の処理が必要とする場合、これらの項目を追加すればよい。
【０３１５】
パス情報「ｐａｔｈ」は、パス情報を「要素番号，階層値，タグ名（改行）」の書式で出力したものである。また、パス情報は、パス情報に加えてスキーマが規定する出現順序、出現回数または書式などの情報を含む場合、スキーマ情報「ｓｃｈｅｍａ」に置換してもよい。なお、「解析済みパス情報」を参照できるなど、パス情報を取得するための適切な別の手段が存在する場合、パス情報「ｐａｔｈ」を省略することができる。
【０３１６】
データ情報「ｄａｔａ」は、配置テーブルの処理対象範囲を列方向（横方向）または行方向（縦方向）に走査し、配置データを検出し、「要素番号，行番号，"配置データ"（改行）」の書式で出力したものである。走査方向により、要素番号または行番号のいずれか一方が整列されることになる。
【０３１７】
配置データから付加データを分離している場合、属性、開始タグ後のタグ間文字データ、終了タグ後のタグ間文字データ、開始タグ後のコメント系データおよび終了タグ後のコメント系データのタグ名を、それぞれ「Ａｔ」、「Ｔｓ」、「Ｔｅ」、「Ｃｓ」および「Ｃｅ」とし、分離した文字列をそれぞれのタグ名で囲み、「要素番号，行番号，"文字列"（改行）」の書式で出力する。
【０３１８】
なお、ＸＭＬ文書の非終端要素の出現を示す情報としてのノードマークは、等価ファイルにおいても必要な情報であるが、ノードマークを"→"または"→[番号]"で表現する必要性はない。終端要素の空マーク（""）と区別できる場合、空の文字列（""）としてもよい。
【０３１９】
また、ライン型展開方法による付加データを分離していない配置テーブルから列方向（横方向）を優先し走査する場合に限っては、行番号を省略することができる。ＸＭＬ文書の文書内容に対応する配置データが文書内容の記述順序に従って検出されるため、行番号を省略した等価ファイルでも、ＸＭＬ文書の文書内容とその記述順序は保持される。具体的には、配置テーブルに関する情報「ｉｎｆｏ」から行範囲の情報を省き、データ情報「ｄａｔａ」については、「要素番号，"配置データ"（改行）」の書式で出力する。
【０３２０】
等価ファイルを取り扱う応用プログラムが行番号を必要とする場合、行番号を容易に作成することができる。具体的には、行番号の初期値として任意の値を設定し、着目するデータの要素番号について、１つ前に出現したデータの要素番号と同じあるいは未満の場合、行番号をインクリメントさせることによって行番号を得ることができる。
【０３２１】
図４５は、図１９に示すブロック型展開方法による配置テーブルを、行方向を優先して走査し出力したリストである。また、図４６は、図１２に示すライン型展開方法による配置テーブルを、列方向を優先して走査し出力したリストであり、ノードマークを空の文字列（""）とし、行番号を省略している。
【０３２２】
図４５と図４６に示す等価ファイルは、元のＸＭＬ文書と等価な文書構造と文書内容を有するファイルである。しかしながら、元のＸＭＬ文書に比べて、非常に単純な構造のファイルである。また、等価ファイルは、データ内容を示すタグを用いて形式的にＸＭＬ形式としている。このため、ＣＳＶ形式ファイルとして読み込む際に、開始タグが各データ内容の開始を示し、また終了タグが各データ内容の終端を示すことになり、データ内容を示す開始タグと終了タグによって読み取りの分岐と終了とを容易に行うことができる。
【０３２３】
応用プログラムは、データ情報「ｄａｔａ」の内容を、等価データの形式あるいは配置テーブルに準じた２次元配列に容易に格納することができる。また、応用プログラムが等価ファイル中のデータを部分的に参照する場合、等価ファイルのパス情報をもとに、処理に必要となるデータの要素番号を特定し、当該要素番号のデータを応用プログラムの変数や配列に直接格納してもよい。
【０３２４】
また、応用プログラムが等価ファイルを作成し、ライン型復元方法またはブロック型復元方法を実行するプログラムが等価ファイルを読み込み、ＸＭＬ文書を作成することも当然可能である。この場合、応用プログラムは、間接的ではあるものの、ＸＭＬ文書を作成する機能を有することになる。
【０３２５】
したがって、応用プログラムは、等価ファイルを用いることによってＸＭＬ文書を間接的に取り扱うことができる。応用プログラムは、ＸＭＬ文書を直接的に取り扱うプログラムに比べて、簡素化されることになる。このことは、処理の効率化、すなわち使用メモリの低減および処理速度の向上につながる。このため、ハードウェア資源が乏しく、従来の方法ではＸＭＬ文書の処理が困難な処理装置でも、等価ファイルを用いることによって、ＸＭＬ文書を処理することが可能となる。
【０３２６】
（８．３）等価ファイルのファイルサイズ
図６に示す文書例２、図４５と図４６に示す等価ファイルのファイルサイズは、Ｓｈｉｆｔ＿ＪＩＳコードとし、改行コードを改行と復帰の２バイトとする場合、文書例２が５９９バイト（字下げ分を含めない場合は４０９バイト）、図４５に示す等価ファイルが５８４バイト、図４６に示す等価ファイルが４３６バイトとなる。図４５と図４６に示すファイルサイズは、文書例２の字下げ分も含めたファイルサイズ（５９９バイト）よりはやや減少しているものの、文書例２の字下げ分を含めないファイルサイズ（４０９バイト）よりも増加している。したがって、圧縮の効果があるとは言えない。
【０３２７】
しかし、対象とした文書例２はタグ名が１文字と短いものであり、通常のＸＭＬ文書のタグ名は１文字よりも長いため、等価ファイルに変換することで圧縮の効果を期待することができる。仮に、文書例２のタグ名を１０文字とした場合、ＸＭＬ文書のファイルサイズが１２６５バイト（字下げ分を含めない場合は１０７５バイト）となる。増加分の６６６バイトは、ＸＭＬ文書に含まれるタグ数（７４タグ）について、タグ名の長さの増加分（９バイト）を乗じた値に相当する。
【０３２８】
この場合、図４５と図４６に相当する等価ファイルのファイルサイズは、それぞれ６５６バイトと５０８バイトとなる。両者の増加分７２バイトは、パス情報「ｐａｔｈ」の８タグ名について、タグの長さの増加分（９バイト）を乗じた値に相当する。文書例２の字下げを含めた場合、図４５と図４６との低減割合は、それぞれ５２％（６５６／１２６５）と４０％（５０８／１２６５）となる。文書例２の字下げを含めない場合でも、図４５と図４６との低減割合は、それぞれ６１％（６５６／１０７５）と４７％（５０８／１０７５）となる。
【０３２９】
多くのＸＭＬ文書でファイルサイズを低減することができ、ＸＭＬ文書によってはファイルサイズが４０％となる。しかしながら、順序非固定型ＸＭＬ文書では、基本的に改行や復帰も空白文字として取り扱う必要があり、タグ間文字データが非常に多く出現することになる。特に、ＸＨＴＭＬ文書では短いタグ名が多用されることもあって、その等価ファイルのファイルサイズは、元のＸＭＬ文書と比べて１０％程度増加することもある。
【０３３０】
ＸＭＬ文書を等価ファイルに変換することによるファイルサイズの低減割合は、タグ名の長さと要素内容および属性などの長さとの相対的な割合、改行や字下げなどを含めタグ間文字データの取り扱い、並びに、符号化文字集合などによって変動する。
【０３３１】
なお、等価ファイルのファイルサイズをさらに減少させるためには、パス情報の削除（パス情報の取得について適切な別の手段が存在する場合）、冗長な文字列の省略（たとえば、有意でない空白文字などの省略）、配置データの短縮文字列による置換、汎用圧縮技術の適用などを併用して行えばよい。
【０３３２】
（８．４）等価ファイルのまとめ
等価ファイルの主な特徴について整理すると、以下のとおりである。
１）等価ファイルは、等価テーブルの内容をリスト化したファイルであり、ＸＭＬ文書と等価な内容を有するものの、非常に単純な構造のファイルとなる。
２）応用プログラムは、等価ファイルを入出力ファイルとすることによって、間接的にＸＭＬ文書を取り扱うことができ、プログラムの簡素化や処理効率の改善につながる。
３）ハードウェア資源が乏しい処理装置でも、等価ファイルを用いることによって、ＸＭＬ文書を処理することが可能となる。
４）多くのＸＭＬ文書で、等価ファイルのファイルサイズは、元のＸＭＬ文書のファイルサイズよりも減少し、圧縮の効果が認められる。
【０３３３】
上述した発明の実施形態（実施例１〜８）では、ＸＭＬ文書を対象として説明した。ＸＭＬの仕様では開始タグと終了タグの省略を認めていないため、「スキーマが明示されないＸＭＬ文書でも、文書構造を明確にすることができる」という特徴がある。この特徴をもとにして、ＸＭＬ文書の文書構造を取得した上で、ＸＭＬ文書の文書内容を等価テーブルあるいは等価ファイルに展開し、また復元することも可能となる。したがって、ＳＧＭＬ文書などの構造化文書でも、開始タグと終了タグの省略がなく要素の入れ子関係が明確な場合、あるいはスキーマに基づいて省略されたタグを確実に補完することができる場合は、本発明による方法を適用することができる。
【０３３４】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において、種々の変更が可能であることはもちろんである。
【図面の簡単な説明】
【０３３５】
【図１】本発明を実現するためのコンピュータシステムの例を示す図である。
【図２】順序非固定型ＸＭＬ文書と順序固定型ＸＭＬ文書との包含関係を示す図である。
【図３】ＸＭＬ文書（ＸＨＴＭＬ文書）のパスリストの例を示す図である。
【図４】パス情報の例を示す図である。
【図５】ＸＭＬ文書からパス情報を取得する方法を示すフローチャートである。
【図６】ＸＭＬ文書の例を示す図である。
【図７】終端要素、終端番号およびパスを説明する図である。
【図８】パス情報から推定される文書型定義（ＤＴＤ）の例を示す図である。
【図９】等価テーブルなどを配置したワークシートの例を示す図である。
【図１０】ＸＭＬ文書を等価テーブルに展開する際の準備処理および後処理を示すフローチャートである。
【図１１】ライン型展開方法を示すフローチャートである。
【図１２】ライン型展開方法による等価テーブルの例を示す図である。
【図１３】ライン型展開方法による配置データのロケーションステップを示す図である。
【図１４】ライン型復元方法を示すフローチャートである。
【図１５】ＸＭＬ文書の要素による入れ子構造の例を示す図である。
【図１６】ブロック型展開方法における開始処理を示すフローチャートである。
【図１７】ブロック型展開方法における要素分割処理を示すフローチャートである。
【図１８】ブロック型展開方法における要素分割処理を示すフローチャートである。
【図１９】ブロック型展開方法による等価テーブルの例を示す図である。
【図２０】ブロック型展開方法による等価テーブルのブロックによる入れ子構造の例を示す図である。
【図２１】ブロック型展開方法による配置データのロケーションステップの例を示す図である。
【図２２】ブロック型復元方法における開始処理を示すフローチャートである。
【図２３】ブロック型復元方法における列分割処理を示すフローチャートである。
【図２４】ブロック型復元方法における行分割処理を示すフローチャートである。
【図２５】分割処理における引数、再帰処理の深さ、および対象とする要素・配置データについての変化状況の例を示す図である。
【図２６】ブロック型復元方法における列分割処理を示すフローチャートである。
【図２７】ブロック型復元方法における行分割処理を示すフローチャートである。
【図２８】分割処理における引数、再帰処理の深さ、および対象とする要素・配置データについての変化状況の例を示す図である。
【図２９】等価テーブルの編集例を示す図である。
【図３０】等価テーブル編集後のロケーションステップの例を示す図である。
【図３１】等価テーブルをブロック型復元方法により復元したＸＭＬ文書の例を示す図である。
【図３２】ＸＭＬ文書を連結処理により展開した等価テーブルの例を示す図である。
【図３３】連結処理による配置データのロケーションステップの例を示す図である。
【図３４】等価テーブルからブロック型復元方法により復元したＸＭＬ文書の例を示す図である。
【図３５】パス情報の例を示す図である。
【図３６】要素番号の対応関係を示すパス情報対応表の例を示す図である。
【図３７】パス情報対応表を用いた構造変換の概要を説明する図である。
【図３８】構造変換先の等価テーブルの例を示す図である。
【図３９】構造変換先の等価テーブルに変更を加えた例を示す図である。
【図４０】復元リストとＨＴＭＬブラウザによる表示イメージを示す図である。
【図４１】シート情報からＸＭＬ文書へ変換時のデータの流れを示す図である。
【図４２】ＣＳＶ形式ファイルから写像テーブルまでのデータの流れを示す図である。
【図４３】ＸＭＬ文書と応用プログラムとのデータの流れを示す図である。
【図４４】等価データの例を示す図である。
【図４５】ブロック型展開方法による等価テーブルから行方向を優先して走査した等価ファイルの例を示す図である。
【図４６】ライン型展開方法による等価テーブルから列方向を優先して走査した等価ファイルの例を示す図である。
【符号の説明】
【０３３６】
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  外部記憶装置
１０５  入力装置
１０６  表示装置
１０７  通信制御装置
１０８  バス
９００  ワークシート
９０１  入力領域
９０２  出力領域
９０３  作業領域
９０４  等価テーブル
９０５  スキーマ領域
９０６  処理対象範囲
９０７  配置領域（配置テーブル）
９０８  付加データ領域
１５０１〜１５１１  要素
２００１〜２０１１  ブロック
３５０１〜３５０３  パス情報
３７０１  パス情報対応表
４１０１  シート情報
４１０２  写像テーブル
４１０３  等価テーブル
４１０４  ＸＭＬ文書
４２０１  ＣＳＶ形式ファイル
４２０２  ＣＳＶ形式ファイル群
４２０３  ＣＳＶ変換用ワークシート
４２０４  シート情報
４２０５  写像テーブル
【図１】
2008165403.tif 000003
【図２】
2008165403.tif 000004
【図３】
2008165403.tif 000005
【図４】
2008165403.tif 000006
【図５】
2008165403.tif 000007
【図６】
2008165403.tif 000008
【図７】
2008165403.tif 000009
【図８】
2008165403.tif 000010
【図９】
2008165403.tif 000011
【図１０】
2008165403.tif 000012
【図１１】
2008165403.tif 000013
【図１２】
2008165403.tif 000014
【図１３】
2008165403.tif 000015
【図１４】
2008165403.tif 000016
【図１５】
2008165403.tif 000017
【図１６】
2008165403.tif 000018
【図１７】
2008165403.tif 000019
【図１８】
2008165403.tif 000020
【図１９】
2008165403.tif 000021
【図２０】
2008165403.tif 000022
【図２１】
2008165403.tif 000023
【図２２】
2008165403.tif 000024
【図２３】
2008165403.tif 000025
【図２４】
2008165403.tif 000026
【図２５】
2008165403.tif 000027
【図２６】
2008165403.tif 000028
【図２７】
2008165403.tif 000029
【図２８】
2008165403.tif 000030
【図２９】
2008165403.tif 000031
【図３０】
2008165403.tif 000032
【図３１】
2008165403.tif 000033
【図３２】
2008165403.tif 000034
【図３３】
2008165403.tif 000035
【図３４】
2008165403.tif 000036
【図３５】
2008165403.tif 000037
【図３６】
2008165403.tif 000038
【図３７】
2008165403.tif 000039
【図３８】
2008165403.tif 000040
【図３９】
2008165403.tif 000041
【図４０】
2008165403.tif 000042
【図４１】
2008165403.tif 000043
【図４２】
2008165403.tif 000044
【図４３】
2008165403.tif 000045
【図４４】
2008165403.tif 000046
【図４５】
2008165403.tif 000047
【図４６】
2008165403.tif 000048
【手続補正書】
【提出日】平成19年7月13日(2007.7.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、
前記コンピュータが、前記処理プログラムにより、前記パス情報を列（行）見出しとするテーブルを作成するステップと、
前記コンピュータが、前記処理プログラムにより、前記ＸＭＬ文書に含まれる要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップと、
前記コンピュータが、前記処理プログラムにより、所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするＸＭＬ文書展開方法。
【請求項２】
前記パス情報を取得するステップは、
前記コンピュータが、前記処理プログラムにより、前記ＸＭＬ文書を開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位とする構文リストに整形するステップと、
前記コンピュータが、前記処理プログラムにより、前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加するステップと、
前記コンピュータが、前記処理プログラムにより、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層の深さを示す階層値とタグ名とに分離するステップと、
を含むことを特徴とする請求項１に記載のＸＭＬ文書展開方法。
【請求項３】
前記パス情報を取得するステップは、
前記処理対象とするＸＭＬ文書が順序固定のパス情報を決めることができるスキーマに基づいたＸＭＬ文書である場合に、前記コンピュータが、前記処理プログラムにより、前記要素番号を用いて整列したパス情報の順序について、前記構文リストを再走査することによって検証するステップと、
前記パス情報の要素番号による順序に、逆転部分が含まれる場合に、前記コンピュータが、前記処理プログラムにより、前記逆転部分の入れ替え処理を繰り返し行うステップと、
を、さらに、含むことを特徴とする請求項２に記載のＸＭＬ文書展開方法。
【請求項４】
前記パス情報を取得するステップは、
前記コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップに代えて、
前記コンピュータが、前記処理プログラムにより、所定の記憶装置から、前記ＸＭＬ文書のスキーマに対応した解析済みパス情報を取得するステップを、
含むことを特徴とする請求項１ないし３いずれか一に記載のＸＭＬ文書展開方法。
【請求項５】
前記解析済みパス情報を取得するステップは、
前記コンピュータが、前記処理プログラムにより、ＸＭＬ文書の文書構造を規定するスキーマから入れ子関係となる要素から階層の深さを示す階層値とタグ名を特定し、取得するステップを、
含むことを特徴とする請求項４に記載のＸＭＬ文書展開方法。
【請求項６】
前記解析済みパス情報を取得するステップは、
前記コンピュータが、前記処理プログラムにより、ユーザの指示に従って、解析済みパス情報を更新するステップを、
含むこと特徴とする請求項４に記載のＸＭＬ文書展開方法。
【請求項７】
前記パス情報を取得するステップは、
前記コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップに代えて、
前記コンピュータが、前記処理プログラムにより、所定の記憶装置から、既に取得しているパス情報を読み出すステップを、
含むことを特徴とする請求項１ないし６いずれか一に記載のＸＭＬ文書展開方法。
【請求項８】
前記コンピュータが、前記処理プログラムにより、前記ＸＭＬ文書に含まれる要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップとして、
前記コンピュータが、前記処理プログラムにより、前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別するステップと、
前記コンピュータが、前記処理プログラムにより、開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記行Ｌが開始タグを含む際に、前記コンピュータが、前記処理プログラムにより、前記要素番号Ｉの要素が終端要素となる場合、または前記行Ｌ中に該開始タグに対応する終了タグを含む場合に、前記開始タグから前記開始タグに対応する終了タグまでを要素として特定し、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、かつ前記行Ｌ中に該開始タグに対応する終了タグを含まない場合に、所定のノードマークを配置データとするステップと、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、前記コンピュータが、前記処理プログラムにより、行（列）番号Ｊを１だけ増加するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納するステップと、
を含むことを特徴とする請求項２ないし７いずれか一に記載のＸＭＬ文書展開方法。
【請求項９】
前記コンピュータが、前記処理プログラムにより、前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップを、
含むことを特徴とする請求項８に記載のＸＭＬ文書展開方法。
【請求項１０】
前記コンピュータが、前記処理プログラムにより、前記ＸＭＬ文書に含まれる要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップとして、
前記コンピュータが、前記処理プログラムにより、前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別するステップと、
前記コンピュータが、前記処理プログラムにより、開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、前記テーブルの展開開始行Ｊ０および異タグ名の兄弟要素が複数存在する場合、最初に処理するための兄弟要素を示す要素番号ＩＢを引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項２ないし７いずれか一に記載のＸＭＬ文書展開方法。
【請求項１１】
前記要素分割処理は、
前記コンピュータが、前記処理プログラムにより、引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記コンピュータが、前記処理プログラムにより、前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納するステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、前記コンピュータが、前記処理プログラムにより、行範囲（Ｌ＋１，Ｌ１）、前記展開開始行（列）Ｊ０および前記要素番号ＩＢを引数とし、要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項１０に記載のＸＭＬ文書展開方法。
【請求項１２】
前記要素分割処理は、
前記コンピュータが、前記処理プログラムにより、引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記コンピュータが、前記処理プログラムにより、前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルから前記要素番号Ｉとその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊを１だけ増加し、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納することを繰り返すステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、前記コンピュータが、前記処理プログラムにより、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻るステップと、
を含むことを特徴とする請求項１０に記載のＸＭＬ文書展開方法。
【請求項１３】
前記コンピュータが、前記処理プログラムにより、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップを、
含むことを特徴とする請求項１０ないし１２いずれか一に記載のＸＭＬ文書展開方法。
【請求項１４】
前記コンピュータが、前記処理プログラムにより、前記配置データに付加データが付加されている場合に、前記テーブルに設けられた付加データを分離して格納するための付加データ領域に格納するステップを、
含むことを特徴とする請求項９または１３に記載のＸＭＬ文書展開方法。
【請求項１５】
前記コンピュータが、前記処理プログラムにより、複数の同一文書構造のＸＭＬ文書を、共通するパス情報を用いて、ｎ番目のＸＭＬ文書の展開終了行（列）をＮとし、ｎ＋１番目のＸＭＬ文書の展開開始行（列）をＮ＋１とし、単一のテーブルに展開すること、
を特徴とする請求項１ないし１４いずれか一に記載のＸＭＬ文書展開方法。
【請求項１６】
前記コンピュータが、前記処理プログラムにより、ユーザより前記パス情報の更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１ないし１５いずれか一に記載のＸＭＬ文書展開方法。
【請求項１７】
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から、請求項１ないし１６いずれか一に記載のＸＭＬ文書展開方法によって展開されたテーブルと、該ＸＭＬ文書を復元する際に用いるタグ名と階層の深さを示す階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出すステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップと、
を含むことを特徴とするＸＭＬ文書復元方法。
【請求項１８】
前記テーブルの配置データとは別に、付加データが分離して配置されている場合、前記コンピュータが、前記処理プログラムにより、前記付加データを配置した付加データ領域から、付加データを読み出し、所定の書式で出力するステップを、
含むことを特徴とする請求項１７に記載のＸＭＬ文書復元方法。
【請求項１９】
前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップとして、
前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定するステップと、
前記要素番号Ｉの前記テーブルから読み出した階層値Ｋが直前に検出した配置データの階層値より小さい場合に、前記コンピュータが、前記処理プログラムにより、前記階層値Ｋまでの終了タグを所定のスタック用配列から取り出し出力するステップと、
前記コンピュータが、前記処理プログラムにより、前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）を出力するとともに、終了タグ（Ｉ）を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ（Ｉ）、前記配置データおよび終了タグ（Ｉ）を連結して出力するステップと、
前記コンピュータが、前記処理プログラムにより、前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力するステップと、
を含むことを特徴とする請求項１７または１８に記載のＸＭＬ文書復元方法。
【請求項２０】
前記コンピュータが、前記処理プログラムにより、前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元するステップを、
さらに、含むことを特徴とする請求項１９に記載のＸＭＬ文書復元方法。
【請求項２１】
前記コンピュータが、前記処理プログラムにより、前記付加データのうち、終了タグ後タグ間文字データと終了タグ後コメント系データについては、所定のスタック用配列に積むステップと、
前記コンピュータが、前記処理プログラムにより、階層値Ｋまでの終了タグを取り出し出力する際に、前記スタック用配列から、前記階層値Ｋまでの終了タグ後タグ間文字データと終了タグ後コメント系データを取り出し、出力することにより、前記付加データを復元するステップと、
を含むことを特徴とする請求項２０に記載のＸＭＬ文書復元方法。
【請求項２２】
前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップとして、
前記コンピュータが、前記処理プログラムにより、前記パス情報から、列（行）番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端となる列（行）番号である終端番号を識別するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックし、列（行）分割処理または行（列）分割処理を呼び出すステップと、
を含むことを特徴とする請求項１７または１８に記載のＸＭＬ文書復元方法。
【請求項２３】
前記列（行）分割処理は、
前記コンピュータが、前記処理プログラムにより、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、前記開始列（行）番号Ｉ０から前記終端番号ＩＥを特定するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルの位置（Ｊ０，Ｉ０）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記コンピュータが、前記処理プログラムにより、前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＥ＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２４】
前記行（列）分割処理は、
前記コンピュータが、前記処理プログラムにより、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが終端要素である場合に、前記コンピュータが、前記処理プログラムにより、開始タグ（Ｉ０）、配置テーブル（ＪＥ，Ｉ０）、終了タグ（Ｉ０）を連結し出力するステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力するステップと、
前記初期対象ブロックに未処理の行（列）範囲が存在し、かつ、テーブルの位置（ＪＥ＋１，Ｉ０）に配置データが存在する場合に、前記コンピュータが、前記処理プログラムにより、行（列）範囲（ＪＥ＋１，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を新たな対象ブロックとして行（列）分割処理を呼び出すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２５】
前記列（行）分割処理は、
前記コンピュータが、前記処理プログラムにより、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とするステップと、
前記コンピュータが、前記処理プログラムにより、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定するステップと、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、前記コンピュータが、前記処理プログラムにより、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記対象ブロックに未処理の列（行）範囲が存在する場合に、前記コンピュータが、前記処理プログラムにより、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定するステップに戻るステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２６】
前記行（列）分割処理は、
前記コンピュータが、前記処理プログラムにより、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、行（列）番号Ｊ０からＪ１までの配置データを検索し、配置データが存在する場合に、開始タグ（Ｉ０）、前記配置データおよび終了タグ（Ｉ０）を連結して出力することを、繰り返すステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記コンピュータが、前記処理プログラムにより、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力し、さらに、前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返すステップと、
を含むことを特徴とする請求項２２に記載のＸＭＬ文書復元方法。
【請求項２７】
前記コンピュータが、前記処理プログラムにより、前記テーブル中に所定の様式で付加された付加データから、属性およびコメント系データをそれぞれ復元するステップを、
さらに、含むことを特徴とする請求項２２ないし２６いずれか一に記載のＸＭＬ文書復元方法。
【請求項２８】
前記コンピュータが、前記処理プログラムにより、ユーザから前記復元範囲の指定を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２７いずれか一に記載のＸＭＬ文書復元方法。
【請求項２９】
前記コンピュータが、前記処理プログラムにより、ユーザより前記パス情報の更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２８いずれか一に記載のＸＭＬ文書復元方法。
【請求項３０】
前記コンピュータが、前記処理プログラムにより、ユーザより前記テーブルの更新を受け付けるステップを、
さらに、含むことを特徴とする請求項１７ないし２９いずれか一に記載のＸＭＬ文書復元方法。
【請求項３１】
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から、処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書を、開始タグ、空要素タグ、終了タグまたは開始タグおよび終了タグの組み合わせを読み出し単位とする構文リストに整形するステップと、
前記コンピュータが、前記処理プログラムにより、前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加するステップと、
前記コンピュータが、前記処理プログラムにより、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列してパス情報を作成するステップと、
を含むことを特徴とするパス情報作成方法。
【請求項３２】
前記処理対象とするＸＭＬ文書が順序固定のパス情報を決めることができるスキーマに基づいたＸＭＬ文書である場合に、前記コンピュータが、前記処理プログラムにより、パス情報の要素番号による順序について、前記構文リストを再走査することによって検証するステップと、
前記パス情報の要素番号による順序に、逆転部分が含まれる場合に、前記コンピュータが、前記処理プログラムにより、前記逆転部分の入れ替え処理を繰り返し行うステップと、
を、さらに、含むことを特徴とする請求項３１に記載のパス情報作成方法。
【請求項３３】
請求項１ないし１６いずれか一に記載のＸＭＬ文書展開方法で展開したテーブルと、展開に使用したパス情報から述部付きのパスを作成するパス作成方法であって、
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、要素番号別の要素カウンタの配列および階層値別の階層値別パスの配列を設定するステップと、
前記コンピュータが、前記処理プログラムにより、所定の記憶装置から、前記テーブルを走査し、配置データの存在により要素の出現を検出した場合に、該要素の前記要素カウンタをインクリメントさせるとともに、該要素が子孫要素を伴う場合は前記子孫要素の要素カウンタをすべて０に設定するステップと、
前記コンピュータが、前記処理プログラムにより、前記要素のタグ名および前記要素カウンタの値から作成した述部付きロケーションステップを、前記階層値別パスに格納するステップと、
前記コンピュータが、前記処理プログラムにより、階層値１から前記要素の階層値までの前記階層値別パスに格納された述部付きロケーションステップを連結しパスを作成するステップと、
を含むことを特徴とするパス作成方法。
【請求項３４】
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、変換前のＸＭＬ文書に含まれる要素の入れ子関係を示す変換前パス情報を用いて、請求項１０ないし１６いずれか一に記載のＸＭＬ文書展開方法により、ＸＭＬ文書を、変換元テーブルに展開し、
前記コンピュータが、前記処理プログラムにより、前記変換元パス情報と、変換後のＸＭＬ文書に含まれる要素の入れ子関係を示した変換後パス情報の対応関係を定めたパス情報対応表を用いて、前記変換元テーブルを、変換先テーブルに書き換え、
前記コンピュータが、前記処理プログラムにより、前記変換後パス情報を用いて、請求項２２ないし３０いずれか一に記載のＸＭＬ文書復元方法により、前記変換先テーブルを、ＸＭＬ文書に復元することにより、ＸＭＬ文書の構造変換を実行するＸＭＬ文書構造変換方法。
【請求項３５】
請求項２ないし１６いずれか一に記載のＸＭＬ文書展開方法で展開したテーブルと、前記ＸＭＬ文書展開方法で取得したパス情報と、から、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルを列方向または行方向のいずれか１方向を優先して走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列（行）番号に対応する要素番号、該配置データの行（列）番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項３６】
ＸＭＬ文書に含まれる要素の入れ子関係を示すパス情報と、請求項８または９に記載のＸＭＬ文書展開方法で展開したテーブルとから、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータが、前記処理プログラムにより、前記テーブルを列（行）方向に走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列（行）番号に対応する要素番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項３７】
コンピュータのＣＰＵで実行する処理プログラムによりＸＭＬ文書に含まれる各要素をテーブルに展開可能なデータ構造であって、
展開後のテーブルの列（行）が、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理して取得された、階層の深さを示す階層値と、タグ名とからなるパス情報を見出しとすること、
前記要素が非終端要素である場合は所定のノードマークが、前記要素が終端要素である場合は該終端要素の要素内容が、それぞれ前記展開後のテーブルに配置されていること、および、
前記展開後のテーブルの配置開始列（行）から配置終了列（行）までの走査を配置開始行（列）から配置終了行（列）まで繰り返すことによって、要素の出現順序を特定でき、
コンピュータのＣＰＵで実行する処理プログラムにより前記ＸＭＬ文書に復元可能なこと、
を特徴とするデータ構造。
【請求項３８】
コンピュータのＣＰＵで実行する処理プログラムによりＸＭＬ文書に含まれる各要素をテーブルに展開可能なデータ構造であって、
前記展開後のテーブルの列（行）が、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理して取得された、階層の深さを示す階層値と、タグ名とからなるパス情報を見出しとすること、
前記要素が非終端要素である場合は所定のノードマークが、前記要素が終端要素である場合は該終端要素の要素内容が、それぞれ前記展開後のテーブルに配置されていること、
前記非終端要素の配置列（行）から子孫要素が展開されうる配置列（行）までの列（行）範囲と、前記非終端要素の配置行（列）から子孫要素が展開されている配置行（列）までの行（列）範囲と、により区画される範囲をブロックとして特定できること、
前記非終端要素の第１子要素は、前記所定のノードマークの配置行（列）と同じ行（列）から配置されていること、および、
ＸＭＬ文書の要素による入れ子構造が、前記ブロックによる入れ子構造に対応し、親子関係となるブロックまたは兄弟関係となるブロックを特定することによって、要素の出現順序を特定でき、
コンピュータのＣＰＵで実行する処理プログラムにより前記ＸＭＬ文書に復元可能なこと、
を特徴とするデータ構造。
【請求項３９】
請求項３７または３８に記載のデータ構造により展開されるテーブルをリスト化したデータ構造であって、
前記展開後のテーブルに配置されている配置データについて、該配置データの列（行）番号に対応する要素番号、該配置データの行（列）番号および該配置データを関連付けたリストであり、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項４０】
請求項３７に記載のデータ構造により展開されるテーブルをリスト化したデータ構造であって、
前記展開後のテーブルに配置されている配置データについて、要素の出現順序に従って、該配置データの列（行）番号に対応する要素番号および該配置データを関連付けたリストであり、要素の出現順序を特定できること、
を特徴とするデータ構造。
【請求項４１】
所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書を開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位とする構文リストに整形する処理と、
前記構文リストから、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得する処理と、
前記パス情報を列（行）見出しとするテーブルを作成する処理と、
前記構文リストに含まれる要素を特定し、該要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理と、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加する処理と、
所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存する処理と、
をコンピュータのＣＰＵに実行させるためのＸＭＬ文書展開プログラム。
【請求項４２】
前記構文リストから、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得する処理として、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加する処理と、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離する処理と、を含み、
前記構文リストに含まれる要素を特定し、該要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理として、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別する処理と、
開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記行Ｌが開始タグを含む際に、前記要素番号Ｉの要素が終端要素となる場合、または前記行Ｌ中に該開始タグに対応する終了タグを含む場合に、前記開始タグから前記開始タグに対応する終了タグまでを要素として特定し、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、かつ前記行Ｌ中に該開始タグに対応する終了タグを含まない場合に、所定のノードマークを配置データとする処理と、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、行（列）番号Ｊを１だけ増加する処理と、
前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納する処理と、
をコンピュータのＣＰＵに実行させるための請求項４１に記載のＸＭＬ文書展開プログラム。
【請求項４３】
前記構文リストから、前記ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得する処理として、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加する処理と、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離する処理と、を含み、
前記構文リストに含まれる要素を特定し、該要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納する処理として、
前記パス情報から、前記要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別する処理と、
開始タグ、空要素タグ、終了タグまたは開始タグと終了タグの組み合わせのいずれかを読み出し単位となるよう処理対象とするＸＭＬ文書を整理した構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、前記テーブルの展開開始行Ｊ０および異タグ名の兄弟要素が複数存在する場合、最初に処理するための兄弟要素を示す要素番号ＩＢを引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出す処理と、
をコンピュータのＣＰＵに実行させるための請求項４１に記載のＸＭＬ文書展開プログラム。
【請求項４４】
前記要素分割処理は、
引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定する処理と、
前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索する処理と、
前記要素番号Ｉの要素が終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊを１だけ増加し、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納することを繰り返す処理と、
前記要素番号Ｉの要素が非終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとして格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出す処理と、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻る処理と、
をコンピュータのＣＰＵに実行させるための請求項４３に記載のＸＭＬ文書展開プログラム。
【請求項４５】
所定の記憶装置から、請求項４１ないし４５いずれか一に記載のＸＭＬ文書展開プログラムによって展開されたテーブルと、該テーブルからＸＭＬ文書を復元する際に用いるタグ名と階層の深さを示す階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出す処理と、
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理と、
前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元する処理と、
をコンピュータのＣＰＵに実行させるためのＸＭＬ文書復元プログラム。
【請求項４６】
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理として、
前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定する処理と、
前記テーブルから読み出した前記要素番号Ｉに対応する階層値Ｋが直前に検出した配置データの階層値より小さい場合に、前記階層値Ｋまでの終了タグを所定のスタック用配列から取り出し出力する処理と、
前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）を出力するとともに、終了タグ（Ｉ）を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ（Ｉ）、前記配置データおよび終了タグ（Ｉ）を連結して出力する処理と、
前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力する処理と、
をコンピュータのＣＰＵに実行させための請求項４５に記載のＸＭＬ文書復元プログラム。
【請求項４７】
前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元する処理として、
前記パス情報から、列（行）番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端となる列（行）番号である終端番号を識別する処理と、
前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックし、列（行）分割処理または行（列）分割処理を呼び出す処理と、
をコンピュータのＣＰＵに実行させるための請求項４５に記載のＸＭＬ文書復元プログラム。
【請求項４８】
前記列（行）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とする処理と、
前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定する処理と、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出す処理と、
前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定する処理に戻る処理と、
をコンピュータのＣＰＵに実行させるための請求項４７に記載のＸＭＬ文書復元プログラム。
【請求項４９】
前記行（列）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とする処理と、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、行（列）番号Ｊ０からＪ１までの配置データを検索し、配置データが存在する場合に、開始タグ（Ｉ０）、前記配置データおよび終了タグ（Ｉ０）を連結して出力することを、繰り返す処理と、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記初期対象ブロック内の開始列（行）番号Ｉ０において開始行（列）番号ＪＳから所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力し、さらに、前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返す処理と、
をコンピュータのＣＰＵに実行させるための請求項４７に記載のＸＭＬ文書復元プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明の第１の視点によれば、コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、前記コンピュータが、前記処理プログラムにより、前記パス情報を列（行）見出しとするテーブルを作成するステップと、前記コンピュータが、前記処理プログラムにより、前記ＸＭＬ文書に含まれる要素から、該要素に応じた配置データを作成し、該要素のパスと前記パス情報との関係および前記要素の出現順序により、前記テーブルにおける前記配置データを格納すべき位置を決定し、前記配置データを前記テーブルの前記位置に格納するステップと、前記コンピュータが、前記処理プログラムにより、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、を含むことを特徴とするＸＭＬ文書展開方法およびこのＸＭＬ文書展開方法をコンピュータで実施するためのプログラムが提供される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の第２の視点によれば、コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から、請求項１ないし１６いずれか一に記載のＸＭＬ文書展開方法によって展開されたテーブルと、該ＸＭＬ文書を復元する際に用いるタグ名と階層の深さを示す階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出すステップと、前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップと、を含むことを特徴とするＸＭＬ文書復元方法およびこのＸＭＬ文書復元方法をコンピュータで実施するためのプログラムが提供される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１４６
【補正方法】変更
【補正の内容】
【０１４６】
また、図１３は、ライン型展開方法による等価テーブルの展開構造を説明するため、図１２の配置データに代えて述部付きのロケーションステップを示す図である。なお、ロケーションステップの述部番号は、まず全要素の述部番号を初期化（０を設定）しておき、等価テーブルの各行を横方向にトレースし配置データが出現する際に、要素の述部番号をインクリメントさせる。同時に、当該要素が子孫要素を含む場合、当該子孫要素の述部番号をすべて初期化する。述部付きのパス作成方法は、コンピュータが、要素番号別の要素カウンタの配列および階層値別の階層値別パスの配列を設定するステップと、前記コンピュータが、前記テーブルを走査し、配置データの存在により要素の出現を検出した場合に、該要素の前記要素カウンタをインクリメントさせるとともに、該要素が子孫要素を伴う場合は前記子孫要素の要素カウンタをすべて０に設定するステップと、前記コンピュータが、前記要素のタグ名および前記要素カウンタの値から作成した述部付きロケーションステップを、前記階層値別パスに格納するステップと、階層値１から前記要素の階層値までの前記階層値別パスに格納された述部付きロケーションステップを連結しパスを作成するステップと、を含む。
【手続補正書】
【提出日】平成19年12月20日(2007.12.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータのパス情報取得手段が、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、ＸＭＬ文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形し、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層の深さを示す階層値とタグ名とに分離することにより、ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、
前記コンピュータのテーブル作成手段が、前記パス情報を列（行）見出しとするテーブルを作成するステップと、
前記コンピュータのデータ配置決定手段が、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別するステップと、
前記構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記行Ｌが開始タグを含む際に、前記要素番号Ｉの要素が終端要素となる場合、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、所定のノードマークを配置データとするステップと、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加するステップと、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、行（列）番号Ｊを１だけ増加するステップと、
前記コンピュータのデータ格納手段が、前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納するステップと、
前記コンピュータのデータ保存手段が、所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするＸＭＬ文書展開方法。
【請求項２】
コンピュータのパス情報取得手段が、所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、ＸＭＬ文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形し、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、
前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを階層の深さを示す階層値とタグ名とに分離することにより、該ＸＭＬ文書に含まれる要素の入れ子関係を整理し、階層の深さを示す階層値と、タグ名とからなるパス情報を取得するステップと、
前記コンピュータのテーブル作成手段が、前記パス情報を列（行）見出しとするテーブルを作成するステップと、
前記コンピュータのデータ配置決定手段が、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別するステップと、
前記構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、前記テーブルの展開開始行Ｊ０および要素番号ＩＢ＝１を引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出すステップと、
前記コンピュータのデータ保存手段が、所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するステップと、
を含むことを特徴とするＸＭＬ文書展開方法。
【請求項３】
前記要素分割処理は、
引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納するステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、行範囲（Ｌ＋１，Ｌ１）、前記展開開始行（列）Ｊ０および前記要素番号ＩＢを引数とし、要素分割処理を呼び出すステップと、
を含むことを特徴とする請求項２に記載のＸＭＬ文書展開方法。
【請求項４】
前記要素分割処理は、
引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定するステップと、
前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定するステップと、
前記テーブルから前記要素番号Ｉとその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索するステップと、
前記要素番号Ｉの要素が終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊを１だけ増加し、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加し、前記配置データを格納することを繰り返すステップと、
前記要素番号Ｉの要素が非終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出すステップと、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻るステップと、
を含むことを特徴とする請求項２に記載のＸＭＬ文書展開方法。
【請求項５】
コンピュータのテーブル読出手段が、所定の記憶装置から、請求項１に記載のＸＭＬ文書展開方法によって展開されパス情報を見出しとするテーブルと、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名（Ｉ）と、階層値（Ｉ）とを取得するステップと、
前記コンピュータのＸＭＬ文書復元手段が、
前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定するステップと、
前記要素番号Ｉに対応する階層値（Ｉ）が直前に検出した配置データの階層値より小さい場合に、前記階層値（Ｉ）までの終了タグおよび前記終了タグに付随する付加データを所定のスタック用配列から取り出し所定の書式で出力するステップと、
配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）および前記開始タグに付随する付加データを所定の書式で出力するとともに、終了タグ（Ｉ）および前記終了タグに付随する付加データを前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、前記配置データから要素内容を取り出し、開始タグ（Ｉ）、前記要素内容、終了タグ（Ｉ）および付加データを所定の書式で出力するステップと、
前記走査終了時に未出力の終了タグおよび前記終了タグに付随する付加データを前記スタック用配列から取り出し出力するステップと、
を含むことを特徴とするＸＭＬ文書復元方法。
【請求項６】
コンピュータのテーブル読出手段が、所定の記憶装置から、請求項２ないし４いずれか一に記載のＸＭＬ文書展開方法によって展開されパス情報を見出しとするテーブルと、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名（Ｉ）と、階層値（Ｉ）とを取得するステップと、
前記コンピュータのＸＭＬ文書復元手段が、
前記パス情報から、列（行）番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端となる列（行）番号である終端番号を識別するステップと、
前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックとし、列（行）分割処理を呼び出すステップと、
を含むことを特徴とするＸＭＬ文書復元方法。
【請求項７】
前記列（行）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、前記開始列（行）番号Ｉ０から前記終端番号ＩＥを特定するステップと、
前記テーブルの位置（Ｊ０，Ｉ０）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＥ＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出すステップと、
を含むことを特徴とする請求項６に記載のＸＭＬ文書復元方法。
【請求項８】
前記行（列）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが終端要素である場合に、前記テーブルの位置（ＪＥ，Ｉ０）の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ（Ｉ０）、前記要素内容、終了タグ（Ｉ０）及び前記付加データ所定の書式で出力するステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記開始列（行）番号Ｉ０の行（列）ＪＳ＋１からＪ１間でノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記テーブルの位置（ＪＳ，Ｉ０）の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ（Ｉ０）および前記開始タグに付随する前記付加データを所定の書式で出力するステップと、
行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出すステップと、
終了タグ（Ｉ０）および前記終了タグに付随する前記付加データを所定の書式で出力するステップと、
前記初期対象ブロックに未処理の行（列）範囲が存在し、かつ、テーブルの位置（ＪＥ＋１，Ｉ０）に配置データが存在する場合に、行（列）範囲（ＪＥ＋１，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を新たな対象ブロックとして行（列）分割処理を呼び出すステップと、
を含むことを特徴とする請求項６または７に記載のＸＭＬ文書復元方法。
【請求項９】
前記列（行）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とするステップと、
前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定するステップと、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出すステップと、
前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定するステップに戻るステップと、
を含むことを特徴とする請求項６に記載のＸＭＬ文書復元方法。
【請求項１０】
前記行（列）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とするステップと、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、前記開始列（行）番号Ｉ０の行（列）ＪＳからＪ１の間で配置データを検索し、配置データが存在する場合に、前記配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ（Ｉ０）、前記要素内容、終了タグ（Ｉ０）及び前記付加データ所定の書式で出力することを、繰り返すステップと、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記開始列（行）番号Ｉ０の行（列）ＪＳ＋１からＪ１間で所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記テーブルの位置（ＪＳ，Ｉ０）の配置データから、要素内容と、属性またはコメント系データを示す付加データが付加されている場合に前記付加データと、を取り出し、開始タグ（Ｉ０）および前記開始タグに付随する前記付加データを所定の書式で出力するステップと、
行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出すステップと、
終了タグ（Ｉ０）および前記終了タグに付随する前記付加データを所定の書式で出力するステップと、
前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返すステップと、
を含むことを特徴とする請求項６または９に記載のＸＭＬ文書復元方法。
【請求項１１】
ＸＭＬ文書に含まれる要素の入れ子関係を示すパス情報と、請求項１ないし４いずれか一に記載のＸＭＬ文書展開方法で展開したテーブルと、から、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータのパス情報出力手段が、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータの配置データ出力手段が、前記テーブルを列方向または行方向のいずれか１方向を優先して走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列（行）番号に対応する要素番号、該配置データの行（列）番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項１２】
ＸＭＬ文書に含まれる要素の入れ子関係を示すパス情報と、請求項１に記載のＸＭＬ文書展開方法で展開したテーブルとから、ＸＭＬ文書と等価な内容を有するデータファイルを作成する等価ファイル作成方法であって、
コンピュータのパス情報出力手段が、所定の記憶装置から読み出した前記パス情報に基づいて、要素番号、階層値およびタグ名を出力するステップと、
前記コンピュータの配置データ出力手段が、前記テーブルを列（行）方向に走査し、該テーブルに配置された配置データを検出した場合に、前記データファイルに、該配置データの列（行）番号に対応する要素番号および前記配置データを出力するステップと、
を含むことを特徴とする等価ファイル作成方法。
【請求項１３】
所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形する構文リスト整形手段、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離するパス情報取得手段、
前記パス情報を列（行）見出しとするテーブルを作成するテーブル作成手段、
前記パス情報から、要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素となるか否かを識別する処理と、
前記構文リストから行Ｌを読み出し、要素の入れ子関係からパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記行Ｌが開始タグを含む際に、前記要素番号Ｉの要素が終端要素となる場合、該要素の要素内容を配置データとし、前記要素番号Ｉの要素が終端要素とならない場合、所定のノードマークを配置データとする処理と、
前記要素に付随する属性、タグ間文字データまたはコメント系データを検出した際に、それぞれ付加データとして前記要素から求めた前記配置データに所定の書式で付加する処理と、
前記要素番号Ｉが直前に配置した配置データの要素番号と比較して以下となる場合に、行（列）番号Ｊを１だけ増加する処理と、
前記テーブルの前記行（列）番号Ｊおよび要素番号Ｉに対応する列（行）に、前記配置データを格納する処理と、の前記各処理を繰り返し行うデータ格納手段、及び、
所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するデータ保存手段として、コンピュータを機能させるためのＸＭＬ文書展開プログラム。
【請求項１４】
所定の記憶装置から処理対象とするＸＭＬ文書を読み込み、該ＸＭＬ文書を開始タグ、空要素タグ、終了タグ、または、開始タグと要素内容と終了タグの組み合わせ、のいずれかを読み出し単位とする構文リストに整形する構文リスト整形手段、
前記構文リストに含まれる要素の入れ子関係よりパスを特定し、新規に出現するパスをパスリストに追加し、前記パスリストについて、深さ優先探索を行う際の探索順序となる順序によって要素番号を決定し、該要素番号を用いて前記パスリストを整列し、前記整列後のパスリストを前記階層値とタグ名とに分離するパス情報取得手段、
前記パス情報を列（行）見出しとするテーブルを作成するテーブル作成手順、
前記パス情報から、前記要素番号を特定するための要素識別用パスリストを作成し、要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別する手段と、
前記構文リストのルート要素の行範囲（Ｌ０，Ｌ１）、前記テーブルの展開開始行Ｊ０および要素番号ＩＢ＝１を引数とし、ＸＭＬ文書を展開する要素分割処理を呼び出す要素分割処理手段、及び、
所定の記憶装置に、前記パス情報、前記テーブルに配置データを展開したテーブルの範囲および前記テーブルを関連付けて保存するデータ保存手段として、コンピュータを機能させるためのＸＭＬ文書展開プログラム。
【請求項１５】
前記要素分割処理手段は、
引数である行範囲（Ｌ０，Ｌ１）から、最初に出現する開始タグＴおよび当該開始タグＴに対応する終了タグを含む行Ｌを取得し、要素を特定する処理と、
前記特定した要素番号ＩＢの親階層のパスとタグ名Ｔからパスを組み立て、該パスを前記要素識別用パスリストと照合することによって要素番号Ｉを特定する処理と、
前記テーブルから前記要素番号Ｉおよびその子孫要素の列（行）範囲で配置データが未配置である行（列）番号Ｊを前記展開開始行（列）Ｊ０から検索する処理と、
前記要素番号Ｉの要素が終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとして格納し、さらに、開始タグＴと同名の開始タグが連続し出現する場合は、同名の他の開始タグに対応する終了タグを含む行Ｌを取得し、要素を特定するとともに、前記行（列）番号Ｊを１だけ増加し、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、前記要素の要素内容を配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納することを繰り返す処理と、
前記要素番号Ｉの要素が非終端要素となる場合に、前記テーブルの前記行（列）番号Ｊおよび前記要素番号Ｉに対応する列（行）に、所定のノードマークを配置データとし、前記要素に付随する属性またはコメント系データを検出した際に、それぞれ付加データとして前記配置データに所定の書式で付加し、前記配置データを格納するとともに、行範囲（Ｌ０＋１，Ｌ）、前記配置行（列）Ｊおよび要素番号Ｉ＋１を引数とし、要素分割処理を呼び出す処理と、
前記行範囲（Ｌ０，Ｌ１）に未処理の行範囲が含まれる場合に、Ｌ０＝Ｌ＋１とし、要素分割処理の最初のステップに戻る処理と、を行う請求項１４に記載のＸＭＬ文書展開プログラム。
【請求項１６】
所定の記憶装置から、請求項１３に記載のＸＭＬ文書展開プログラムによって展開されパス情報を見出しとするテーブルと、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名（Ｉ）と、階層値（Ｉ）とを取得する処理と、
前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定する処理と、を実行するテーブル読出手段、
前記要素番号Ｉに対応する階層値（Ｉ）が直前に検出した配置データの階層値より小さい場合に、前記階層値（Ｉ）までの終了タグを所定のスタック用配列から取り出し出力する処理と、
前記配置データが所定のノードマークを含む場合に、開始タグ（Ｉ）を出力するとともに、終了タグ（Ｉ）を前記スタック用配列に積み、前記配置データが所定のノードマークを含まない場合に、開始タグ（Ｉ）、前記配置データおよび終了タグ（Ｉ）を連結して出力する処理と、
前記走査終了時に未出力の終了タグを前記スタック用配列から取り出し出力する処理と、を実行する出力手段、及び、
前記配置データに付加データが付加されている場合に、前記付加データの所定の書式に基づいて、属性、タグ間文字データまたはコメント系データを復元する付加データ復元手段として、コンピュータを機能させるためのＸＭＬ文書復元プログラム。
【請求項１７】
所定の記憶装置から、請求項１４または１５に記載のＸＭＬ文書展開プログラムによって展開されパス情報を見出しとするテーブルと、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出し、更に、前記パス情報からタグ名（Ｉ）と、階層値（Ｉ）とを取得する処理と、
前記テーブルの復元範囲を読み取り、前記復元範囲を列（行）方向に走査し、該テーブルに配置された配置データを検出し、列（行）番号から要素番号Ｉを特定する処理と、を実行するテーブル読出手段、及び、
前記パス情報から、列（行）番号から特定した要素番号毎に該要素番号の要素が終端要素または非終端要素のいずれになるかを識別し、各要素の子孫要素が配置されうる列（行）範囲の終端となる列（行）番号である終端番号を識別する処理と、
前記テーブルの復元範囲を読み取り、該復元範囲の行（列）範囲および列（行）範囲を対象ブロックとし、列（行）分割処理または行（列）分割処理を呼び出す処理と、を実行する出力手段として、コンピュータを機能させるためのＸＭＬ文書復元プログラム。
【請求項１８】
前記列（行）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始列（行）番号ＩＳをＩ０とする処理と、
前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定する処理と、
前記テーブルの位置（Ｊ０，ＩＳ）に配置データが存在する場合に、行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（ＩＳ，ＩＥ）によって特定される範囲を新たな対象ブロックとし、行（列）分割処理を呼び出す処理と、
前記初期対象ブロックに未処理の列（行）範囲が存在する場合に、前記開始列（行）番号ＩＳをＩＥ＋１とし、前記開始列（行）番号ＩＳから前記終端番号ＩＥを特定する処理に戻る処理と、を行う請求項１７に記載のＸＭＬ文書復元プログラム。
【請求項１９】
前記行（列）分割処理は、
行（列）範囲（Ｊ０，Ｊ１）および列（行）範囲（Ｉ０，Ｉ１）によって特定される範囲を初期対象ブロックとし、開始行（列）番号ＪＳをＪ０、終端行（列）番号ＪＥをＪ０とする処理と、
開始列（行）番号Ｉ０に配置される配置データが終端要素となる場合に、行（列）番号Ｊ０からＪ１までの配置データを検索し、配置データが存在する場合に、開始タグ（Ｉ０）、前記配置データおよび終了タグ（Ｉ０）を連結して出力することを、繰り返す処理と、
開始列（行）番号Ｉ０に配置される配置データが非終端要素となる場合に、前記開始列（行）番号Ｉ０の行（列）ＪＳ＋１からＪ１間で所定のノードマークを含む配置データを検索し、前記ノードマークを含む配置データが出現する場合は、該配置データの直前行を終端行（列）番号ＪＥとし、前記ノードマークを含む配置データが出現しない場合は、行（列）番号Ｊ１を終端行（列）番号ＪＥとし、開始タグ（Ｉ０）を出力し、行（列）範囲（ＪＳ，ＪＥ）および列（行）範囲（Ｉ０＋１，Ｉ１）によって特定される範囲を新たな対象ブロックとし、列（行）分割処理を呼び出し、終了タグ（Ｉ０）を出力する処理と、
前記初期対象ブロックに未処理の行（列）範囲が存在する場合に、前記行（列）番号ＪＥ＋１を新たな開始行（列）番号ＪＳとし、行（列）範囲（ＪＳ，Ｊ１）を対象とした出力を、繰り返す処理と、を行う請求項１７または１８に記載のＸＭＬ文書復元プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の第２の視点によれば、コンピュータが、所定の記憶装置に格納した処理プログラムを実行することにより、所定の記憶装置から、上記したＸＭＬ文書展開方法によって展開されたテーブルと、該ＸＭＬ文書を復元する際に用いるタグ名と階層の深さを示す階層値を示すパス情報と、ＸＭＬ文書を復元する前記テーブルの復元範囲と、を読み出すステップと、前記コンピュータが、前記処理プログラムにより、前記テーブルの復元範囲から該テーブルに格納された配置データを検出し、前記配置データの内容と配置位置から前記配置データのタグ付けを行い、ＸＭＬ文書を復元するステップと、を含むことを特徴とするＸＭＬ文書復元方法およびこのＸＭＬ文書復元方法をコンピュータで実施するためのプログラムが提供される。