(57)【要約】      （修正有）【課題】マークアップ言語の特性に対する制限を最小限に抑えつつ、同一の論理構造を備えた複数の構造化文書を統合する作業の合理化技術の提供。【解決手段】同一の論理構造を持つ複数の構造化(XML文書10,20)のうち、一方の文書10を基礎として他方の文書20を統合して統合済み文書50を作成する。基礎となる基本文書10、その基本文書10に対する差分となる差分文書20、差分統合を要する構造化文書の定義ファイルをマージルール記述ファイル30として蓄積する定義ファイル蓄積手段39、その記述ファイル30を用いて差分文書20を走査する走査手段69と、抽出された差分をXPathコンテキスト40として蓄積する走査過程蓄積手段49と、XPathコンテキスト40、基本文書10、及び、差分文書20を用いて統合済み文書50を作成する差分反映手段59を備える。【選択図】図１
2014081886.tif 000002
【特許請求の範囲】
【請求項１】
同一の論理構造を持つ複数の構造化文書のうち、一方の構造化文書を基礎として他方の構造化文書を統合して統合済み文書を作成するためのファイル管理装置であって、
そのファイル管理装置は、基礎となる構造化文書である基本文書を蓄積する基本文書蓄積手段と、
前記の基本文書に対する差分となる差分文書を入力する対象文書入力手段と、
その対象文書入力手段が入力した差分文書を蓄積する差分文書蓄積手段と、
差分統合を要する構造化文書の定義ファイルをマージルール記述ファイルとして蓄積する定義ファイル蓄積手段と、
前記の定義ファイル蓄積手段におけるマージルール記述ファイルを用いて前記の差分文書を走査する走査手段と、
その走査手段によって抽出された差分要素を差分要素として蓄積し、該抽出時点におけるXPathをXPathコンテキストとして蓄積する走査過程蓄積手段と、
その走査過程蓄積手段に蓄積されたXPathコンテキストおよび差分要素、前記の基本文書、および前記の差分文書を用いて統合済み文書を作成する差分反映手段と、  を備え、
前記の差分反映手段は、前記のXPathコンテキストを用いて差分要素が基本文書に既存であるか否かを検索し、既存であれば上書きするとともに、存在していなければ追加することによって統合済み文書を作成することとしたファイル管理装置。
【請求項２】
前記の走査手段が走査して前記の走査過程蓄積手段に蓄積した前記のXPathコンテキストの全要素を結合することで差分検索XPath を生成して保持する差分検索XPath保持手段と、
前記の差分検索XPathを用いて前記の差分文書を検索してヒットした要素を結合して既存検査XPath を生成して保持する既存検査XPath保持手段と、  を備え、
前記の差分反映手段は、前記の既存検査XPath保持手段に保持された既存検査XPathに該当する要素が基本文書に既存であるか否かを検索することとした請求項１に記載のファイル管理装置。
【請求項３】
前記の走査手段は、前記のマージルール記述ファイルにおいて、子孫ルールが存在する場合には、その子孫ルールを用いて前記の差分文書を走査することとした請求項１または請求項２のいずれかに記載のファイル管理装置。
【請求項４】
同一の論理構造を持つ複数の構造化文書のうち、一方の構造化文書を基礎として他方の構造化文書を統合して統合済み文書を作成するためのコンピュータプログラムであって、
そのプログラムは、  基礎となる構造化文書である基本文書を蓄積する基本文書蓄積手順と、
前記の基本文書に対する差分となる差分文書を入力する対象文書入力手順と、
その対象文書入力手段が入力した差分文書を蓄積する差分蓄積手順と、
差分統合を要する構造化文書の定義ファイルをマージルール記述ファイルとして蓄積する定義ファイル蓄積手順と、
前記の定義ファイル蓄積手段におけるマージルール記述ファイルを用いて前記の差分文書を走査する走査手順と、
その走査手順にて抽出された差分をXPathコンテキストとして蓄積するXPath蓄積手順と、
そのXPath蓄積手順に蓄積されたXPathコンテキスト、前記の基本文書、および前記の差分XML文書を用いて統合済み文書を作成する差分反映手順と、  をコンピュータに実行させるものであり、
前記の差分反映手順は、前記のXPathコンテキストを用い差分要素が基本文書に既存であるか否かを検索し、既存であれば上書きするとともに、存在していなければ追加することによって統合済み文書を作成することとしたコンピュータプログラム。
【請求項５】
前記の走査手順にて走査して前記の走査過程蓄積手段に蓄積した前記のXPathコンテキストの全要素を結合することで差分検索XPath を生成して保持する差分検索XPath保持手順と、
前記の差分検索XPathを用いて前記の差分文書を検索してヒットした要素を結合して既存検査XPath を生成して保持する既存検査XPath保持手順と、  を更にコンピュータに実行させることとし、
前記の差分反映手順は、前記の既存検査XPath保持手段へ保持された既存検査XPathに該当する要素が基本文書に既存であるか否かを検索することとした請求項４に記載のコンピュータプログラム。
【請求項６】
前記のマージルール記述ファイルにおいて、子孫ルールが存在する場合には、前記の走査手順および前記の差分反映手順を、子孫ルールについて、および／または該子孫ルールの子孫たる子孫ルールについて、再帰的にコンピュータに実行させることとした請求項４または請求項５のいずれかに記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理的な構造が同一の複数の文書が存在する場合に、その文書を統合して単一の統合済文書を作成する文書処理技術に関する。
【背景技術】
【０００２】
インターネット上の言語としては、ブラウザでの表示において簡便な「ＨＴＭＬ」が普及したが、ファイル内の文字情報をデータとして利用する場合の利便性などから「ＸＭＬ」が普及した。
ＸＭＬには、タグの定義を自由設定でき、データ構造を表現でき、標準化が国際レベルで進められている、といったメリットがある。
【０００３】
一般に、業務改善を望む組織に対して外部のソフトウェアを導入する場合、業務改善のためのソフトウェア提供者（外部のソフトウェア業者）が、業務改善を望む組織に対するカスタマイズをする。すなわち、ソフトウェア提供者は、自らが提供する基本ソフトウェアをカスタマイズし、業務改善を望む組織へ提供する。
さて、ソフトウェア提供者が前記の基本ソフトウェアをバージョンアップしたとする。すると、前バージョンを提供した組織に対して、カスタマイズした内容を反映させてバージョンアップしなければならない。
より具体的には、「パッケージ基本部分」ファイルをもとにして「個別カスタマイズ部分」の内容を反映した「統合ファイル」を手作業で作成する必要がある。すなわち、後から「パッケージ基本部分」を改訂しようとしたとき、「統合ファイル」のどの箇所が基本部分で、どの箇所が個別カスタマイズ部分なのか判別不能となってしまい、改訂を入れることは著しく困難である。困難を承知で作業する場合には、注意と十分な検証を要する作業となってしまう。
【０００４】
前記のソフトウェアがＸＭＬ言語で記述されている場合、以下のような問題が起きる。
すなわち、比較すべき複数のXML文書（たとえば、バージョンアップ前後のソフトウェアとバージョンアップ前にカスタマイズしたソフトウェア）にどのような差分が存在しているかを比較することは、簡単ではない。  たとえば、要素の照合、属性値の相違、子ノードの有無、といった差分までを抽出したり、比較したりすることは、簡単ではなかった。
【０００５】
更に具体的に説明する。
XML文書における任意の要素(属性含む)は、XPath（XML Path Language ；ソースツリー内のノードを正確に特定するための言語）を用いることで、その位置を一意に定めることができる。
しかし、XML文書における任意の要素を指し示したとしても、当該要素を一意に特定するXPathを生成することは容易ではない。「要素を一意に特定する」とは、当該要素が属する親要素、その親要素が属する祖先要素もまた一意に特定されねばならないことである。すなわち、「何を以ってその要素あるいは親要素あるいはルート要素に遡るまでに存在する祖先要素それぞれを、それぞれの階層中で一意であるかということを特定することが必要である」ということである。  したがって、任意の要素を指し示したとしても、当該要素を一意に特定するXPathを生成することは困難なのである。
【０００６】
同一の論理構造を備えたXML文書αとXML文書βとが既に存在していたとする。XML文書αの内容に対して、XML文書βの内容を上書きしたいとする。  つまり、XML文書αには存在しない要素であれば追加し、XML文書αにおいて既に存在する要素であれば書き換える、という作業をしようとしたとする。  このとき、XML文書βにおける任意の要素アが、XML文書α内に存在するのかしないかを、一意に特定する条件としてのXPath表現を生成することが、そもそも困難である。
【０００７】
本出願人は、先行する技術を検索したところ、以下のような技術を抽出した。
（NRIサイバーパテント社の「サイバーパテントデスク２・概念検索」を用いて「複数のXML文書のマージ、併合を簡単に行う」などを検索文書として入力した）
【０００８】
特許文献１に開示された技術は、XML文書の構造を、画像にて比較的に表現する、という技術である。
特許文献２に開示された技術は、システム形態に依存しない汎用的な形でのＸＭＬ文書の処理を可能にするための技術である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−２１０２５２号公報
【特許文献２】特開２００４−１１０６５０号公報
【００１０】
調査した先行技術のほか、前述した問題を解決する手法として、以下のような手法が提案されている。
まず、XML文書中におけるマージ（merge；統合／併合）する対象となる要素の全てに対して、一意性を特定するためのid属性を付与する。そして、比較すべき複数のXML文書の間において、そのid属性を比較し、既存有無をチェックする。  チェックの結果、統合を要する場合には、位置特定のためのXPath を生成するのである。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
前述した手法を採用して運用するには、要素を特定するためのid属性を、異なるXML文書間で統一されたルールに従って付与する必要がある。つまり、新規id属性値は正しく発行し、または既存要素の場合にあっては既に決定されたid属性値を再利用しなければならない。  換言すれば、XMLの編集主体を単一のプログラムのみに制約し、かつ同プログラムは編集対象の関連およびその内容を常に把握・斟酌しながら編集を行わなければならない。
現場においては、複数のXML文書を異なる人物が作成編集することが前提である。  前述した業務改善のソフトウェア提供者にあてはめれば、基本ソフトウェアを作成する作成者と、提供先に対してカスタマイズ作業をする作業者とは異なるのが普通である。
そうした現場では、お互いの重複可能性を知り得ないという制約があり、上述の手法の運用が現実的ではないことは明白である。
【００１２】
そもそもXMLという言語は、極めて自由度が高いことを特徴としている。したがって前述の手法は、そのXMLの表現力を毀損してしまうという矛盾点を抱えている。
また、特許文献１および特許文献２に開示された技術は、前述してきた問題を一部解決している。  しかし、XML文書αの内容に対してXML文書βの内容を上書きすることによって複数のXML文書をマージするという作業に対しては、合理的に機能しない面がある。
以上、XML文書を例に挙げて説明してきたが、XMLに限らず、XHTML、HTMLなど、マークアップ言語を用いた構造化文書においては共通する課題である。
【００１３】
発明が解決しようとする課題は、極めて自由度が高いというマークアップ言語の特性に対する制限を最小限に抑えつつ、同一の論理構造を備えた複数の構造化文書を統合するという作業を合理化する技術を提供することにある。
【課題を解決するための手段】
【００１４】
課題を解決するための手段として、本願発明を提供する。
本発明は、第一の発明としてファイル管理装置、第二の発明としてコンピュータプログラムを提供する。
なお、以下、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするため、［発明を実施するための形態］にて使用する番号・符号を、括弧書きにて付加する。しかし、その括弧書きの番号・符号は、［特許請求の範囲］に記載する発明の技術的範囲の解釈に用いられることは意図していない。
【００１５】
（第一の発明）
第一の発明は、同一の論理構造を持つ複数の構造化文書(たとえばXML文書10,20)のうち、一方の構造化文書(10)を基礎として他方の構造化文書(20)を統合して統合済み構造化文書(たとえば統合済みXML文書50)を作成するためのファイル管理装置に係る。
そのファイル管理装置は、  基礎となる構造化文書である基本文書(10)を蓄積する基本文書蓄積手段(19)と、  前記の基本文書(10)に対する差分となる差分文書(差分XML文書20)を入力する対象文書入力手段(29)と、  その対象文書入力手段(29)が入力した差分文書(20)を蓄積する差分文書蓄積手段(28)と、  差分統合を要する構造化文書の定義ファイルをマージルール記述ファイル(30)として蓄積する定義ファイル蓄積手段(39)と、  前記の定義ファイル蓄積手段(39)におけるマージルール記述ファイル(30)を用いて前記の差分文書(20)を走査する走査手段(69)と、  その走査手段(69)によって抽出された差分を差分要素(41)として、該抽出時点におけるXPath検索条件をXPathコンテキスト(40)として蓄積する走査過程蓄積手段(49)と、  その走査過程蓄積手段(49)に蓄積されたXPathコンテキスト(40)および差分要素(41) 、前記の基本文書(10)、および前記の差分文書(20)を用いて統合済み文書(50)を作成する差分反映手段(59)と、  を備える。
前記の差分反映手段(59)は、前記のXPathコンテキスト(40)を用いて差分要素が基本文書(10)に既存であるか否かを検索し、既存であれば上書きするとともに、存在していなければ追加することによって統合済み構造化文書を作成することとしたファイル管理装置である。
前記の「構造化文書」とは、XML、XHTML、HTMLなど、マークアップ言語を用いた構造化文書を指すものとする。
「XPath蓄積手段」、「XPath検索条件」、「XPathコンテキスト」などに用いる「XPath」という用語は、［特許請求の範囲］の解釈においてXML文書に限られない。XHTML、HTMLなど、マークアップ言語を用いた文書に適用する。
【００１６】
（作用）
基礎となる構造化文書である基本文書(10)を基本文書蓄積手段(19)が蓄積している。  一方、基本文書(10)に対する差分となる差分書(20)を、対象文書入力手段(29)が入力し、入力された差分文書(20)は、差分文書蓄積手段(28)に蓄積される。  更に、差分統合を要する文書の定義ファイルを、マージルール記述ファイル(30)として定義ファイル蓄積手段(39)が蓄積する。
前記の差分文書(20)に対して、定義ファイル蓄積手段(39)におけるマージルール記述ファイル(30)を用いて、走査手段(69)が走査する。その走査手段(69)によって抽出された差分は、差分要素(41)として、また該抽出時点におけるXPath検索条件はXPathコンテキスト(40)として走査過程蓄積手段(49)に蓄積される。
XPath蓄積手段(49)に蓄積されたXPathコンテキスト(40)、前記の基本文書(10)、および前記の差分文書(20)を用いて、差分反映手段(59)が統合済み文書(50)を作成する。すなわち、差分反映手段(59)は、前記のXPathコンテキスト(40) を用いて差分要素が基本文書(10)に既存であるか否かを検索する。そして、既存であれば上書きするとともに、存在していなければ追加することによって統合済み文書を作成する。
【００１７】
第一の発明は、構造化文書の構造、特にルート要素から連なるそれぞれの階層における任意の要素と、その要素を一意に特定する条件を記述した定義ファイル(「マージルール記述ファイル」という)を用いる。  そして、基本文書を基準としてではなく定義ファイルを基準として構造化文書を走査する。  構造定義と実際の要素を援用して構造化文書中から検証要素を一意に特定するXPathを動的に生成する。そこで生成したXPathを、位置特定手段として用いる。このことで、マークアップ言語を用いた構造化文書が備える本来の柔軟な表現力を保ったまま、複数の構造化文書を統合することができる。
【００１８】
（第一の発明のバリエーション１）
第一の発明は、以下のように形成してもよい。
すなわち、  前記の走査手段(69)が走査して前記の走査過程蓄積手段(49)に蓄積した前記のXPathコンテキスト(40)の全要素を結合することで差分検索XPath を生成して保持する差分検索XPath保持手段(58)と、  前記の差分検索XPathを用いて前記の差分文書(20)を検索してヒットした要素を結合して既存検査XPath を生成して保持する既存検査XPath保持手段(57)と、を備える。
そして、前記の差分反映手段(59)は、前記の既存検査XPath保持手段(57)に保持された既存検査XPathを用いて基本文書(10)を検索し、既存要素が存在するときには差分文書(20)の属性値を反映し、既存要素が存在しないときには差分文書(20)の要素を新規要素として追加することとしてもよい。
【００１９】
（作用）
前記の走査手段(69)は、前記の走査過程蓄積手段(49)に蓄積した前記のXPathコンテキスト(40)を走査し、全要素を結合することで差分検索XPath を生成し、差分検索XPath保持手段(58)にて保持する。  また、前記の差分検索XPathを用いて前記の差分文書(20)を検索してヒットした要素を結合して既存検査XPath を生成し、既存検査XPath保持手段(57)へ保持する。
前記の差分反映手段(59)は、前記の既存検査XPath保持手段(57)に保持された既存検査XPathを用いて基本文書(10)を検索する。そして、既存要素が存在するときには差分文書(20)の属性値を反映し、既存要素が存在しないときには差分文書(20)の要素を新規要素として追加、最終的に基本文書(10)に差分文書(20)の内容を反映した統合済み文書(50)を作成する。
なお、「保持」は、ランダムアクセスメモリのように、一時的な記憶でもよいし、不揮発性メモリへ保存する記憶でもよい。
【００２０】
（第一の発明のバリエーション２）
第一の発明は、前記のマージルール記述ファイル(30)において、子孫ルールが存在する場合に、前記の走査手段(69)が、その子孫ルールを用いて前記の差分文書(20)を走査することとしてもよい。
ここで、「子孫ルール」とは、ひとつのルールに対して、階層化された一つ下のルールを「子ルール」、その「子ルール」の更に下へ階層化されたルールを「孫ルール」という。  説明の便宜上、「ひとつのルール」(第一階層)、「子ルール」(第二階層)、「孫ルール」(第三階層)までの表現にとどめるが、子孫ルールとして適用可能な階層の深さについての制約は、特にない。
【００２１】
（第二の発明）
第二の発明は、同一の論理構造を持つ複数の構造化文書のうち、一方の構造化文書を基礎として他方の構造化文書を統合して統合済みの構造化文書を作成するためのコンピュータプログラムに係る。
そのプログラムは、  基礎となる構造化文書である基本文書を蓄積する基本文書蓄積手順と、  前記の基本文書に対する差分となる構造化文書である差分文書を入力する対象文書入力手順と、  その対象文書入力手段が入力した差分文書を蓄積する差分蓄積手順と、  差分統合を要する構造化文書の定義ファイルをマージルール記述ファイルとして蓄積する定義ファイル蓄積手順と、  前記の定義ファイル蓄積手段におけるマージルール記述ファイルを用いて前記の差分文書を走査する走査手順と、  その走査手順にて抽出された差分をXPathコンテキストとして蓄積するXPath蓄積手順と、  そのXPath蓄積手順に蓄積されたXPathコンテキスト、前記の基本文書、および前記の差分文書を用いて統合済み文書を作成する差分反映手順と、  をコンピュータに実行させるものである。
前記の差分反映手順は、前記のXPathコンテキストを用いて差分要素が基本文書に既存であるか検索し、既存であれば上書きするとともに、存在していなければ追加することによって統合済み文書を作成する。
【００２２】
（第二の発明のバリエーション１）
第二の発明は、以下のように形成してもよい。
すなわち、  前記の走査手順にて走査して前記の走査過程蓄積手段(49)に蓄積した前記のXPathコンテキストの全要素を結合することで差分検索XPath を生成して保持する差分検索XPath保持手順と、  前記の差分検索XPathを用いて前記の差分文書を検索してヒットした要素を結合して既存検査XPath を生成して保持する既存検査XPath保持手順と、  を更にコンピュータに実行させることとする。
そして、前記の差分反映手順は、前記の既存検査XPath保持手段に保持された既存検査XPathを用いて基本文書(10)を検索し、既存要素が存在するとき差分文書(10)の属性値を反映し、既存要素が存在しないとき差分文書(20)の要素を新規要素として追加、最終的に基本文書(10)に差分文書(20)の内容を反映した統合済み文書を作成することとする。
【００２３】
（第二の発明のバリエーション２）
第二の発明は、前記のマージルール記述ファイルにおいて、子孫ルールが存在する場合には、前記の走査手順および前記の差分反映手順を、子孫ルールについて、および／または該子孫ルールの子孫たる子孫ルールについて、再帰的にコンピュータに実行させることとしてもよい。
【００２４】
（第二の発明の提供形態）
第二の発明は、ＣＤ−Ｒ、ＤＶＤ−Ｒなどの記録媒体に記憶させて提供することもできるし、通信回線を介してインストールすることで提供することもできる。
【発明の効果】
【００２５】
本願発明によれば、極めて自由度が高いというマークアップ言語の特性に対する制限を最小限に抑えつつ、同一の論理構造を備えた複数の構造化文書を統合するという作業を合理化する技術を提供することができた。
【図面の簡単な説明】
【００２６】
【図１】第一の実施形態を示すブロック図である。
【図２】第二の実施形態を示すブロック図である。
【図３】統合する手順を示す概念図である。
【図４】統合する手順を示す概念図である。
【図５】統合する手順を示す概念図である。
【図６】統合する手順を示す概念図である。
【図７】統合する手順を示す概念図である。
【図８】統合する手順を示す概念図である。
【図９】統合する手順を示す概念図である。
【発明を実施するための形態】
【００２７】
以下、図面を用いて、本発明を実施した場合の形態について説明する。ここで使用する図面は、図１から図９である。
図１および図2を用いて二つの実施形態の概要を説明し、続いて図３以降で本実施形態に用いる情報処理の手順を詳細に説明する。
なお、下記の実施形態では、マークアップ言語としてXML文書を採用したが、本願発明は、XML文書に限られるものではない。
【００２８】
（図１）
図１では、M社、N社という2つの組織に対して、アプリケーション提供者がXML文書ファイルにてアプリケーションを提供した、という実施形態である。
ここで、アプリケーション提供者は、M社に対してもN社に対しても、それら組織に対応したカスタマイズを施している。あるいは、M社、N社における組織内の担当者が組織に対応したカスタマイズを施している場合であってもよい。
この場合、アプリケーション提供者がM社、N社に対して提供することとなったアプリケーションのカスタマイズ前の文書は、基本XML文書１０であり、基本文書蓄積手段１９に蓄積されている。
【００２９】
一方、M社、N社においてカスタマイズされたXML文書をそれぞれ、M社差分XML文書２１、N社差分XML文書２２とする。それら差分XML文書２０を、基本XML文書１０に統合するため、まず、対象文書入力手段２９へ入力する。対象文書入力手段２９とは、一般的には、M社差分XML文書２１、N社差分XML文書２２が格納されたコンピュータから送信され、統合作業を実行するコンピュータにおける受信手段である。ただし、記録媒体に格納したM社差分XML文書２１、N社差分XML文書２２をインストールする場合には、その記録媒体の読み取り装置が対象文書入力手段２９となる。
【００３０】
一方、差分統合を要するXML文書の定義ファイルを、マージルール記述ファイル３０として定義ファイル蓄積手段３９に蓄積しておく。
前記の差分XML文書２０に対し、定義ファイル蓄積手段３９におけるマージルール記述ファイル３０を用いて、走査手段６９が走査する。この走査手段６９によって抽出された差分は、XPathコンテキスト４０として走査過程蓄積手段４９に蓄積される。
【００３１】
走査過程蓄積手段４９に蓄積されたXPathコンテキスト４０、前記の基本XML文書１０、および前記の差分XML文書２０を用いて、差分反映手段５９が統合済みXML文書５０を作成する。すなわち、差分反映手段５９は、前記のXPathコンテキスト４０を用い差分要素が基本XML文書１０に既存であるかを検索する。そして、既存であれば上書きするとともに、存在していなければ追加することによって統合済みXML文書を作成する。
【００３２】
（図２）
図2に示す第二の実施形態は、基本文書蓄積手段１０に、基本XML文書のバージョン１（図中では「ver1」と略記）とバージョン２（図中では「ver2」と略記）が存在する場合において、M社特有のＸＭＬ文書２１を統合して、統合済み文書のバージョン１，２をそれぞれ自動作成する場合である。
【００３３】
図1に示した実施形態と異なる点は、以下の点である。すなわち、基本文書蓄積手段１０に２つのバージョンの文書１１，１２が蓄積されており、対象文書入力手段２９にはＭ社差分ＸＭＬ文書２１が入力され、統合文書筑西手段５６には、Ｍ社統合済み文書のバージョン１（５３）と、バージョン２（５４）とが最終的には蓄積されることとなる。
【００３４】
図３以後、走査手段６９および差分反映手段５９が、どのような情報処理を実行しているかを、図中の「[  ]」にて囲まれた数字を示しながら順次説明する。
【００３５】
（図３）
最初に、マージルール記述ファイル３０の中から、ルールを１件読み出す[１]。
図中では、ルート要素「merge-rule」という記載箇所がルール要素を示しているので、その直下に位置する「cond path="/codedef"」の行が、読み出すべきルールとなる。
このルールの階層をたどり、「/codedef」を抽出し、XPathコンテキスト４０として追加する[２]。そして、XPathコンテキストの全要素を結合し、差分検索XPathを作成し[３]、差分検索XPath保持手段５８へ一時的に格納する（実際には、ランダムアクセスメモリへ「/codedef」を記憶させる）。
更に、この差分検索XPathを用いて、差分ＸＭＬ文書２０の該当箇所を検索する[４]。
【００３６】
（図４）
差分ＸＭＬ文書２０の該当箇所として、差分検索XPathを検索し、該当する要素を発見する[５]。  しかし、「/codedef」のルールにはkey属性が定義されていないので、XPathコンテキストに、XPath述語は追加しない[６]。
続いて、XPathコンテキストの全要素を結合し、既存検査XPathを生成し、既存検査XPath保持手段５７へ一時的に格納する（実際には、ランダムアクセスメモリへ「/codedef」を記憶させる）[７]。
その既存検査XPathを用いて、基本XML文書１０の既存要素を検索する[８]。  既存検査XPathを用いて基本XML文書１０を検索したとき、検索ヒットする要素が存在したら、同要素の属性値を差分XML文書の要素が持つ属性値で置き換え、存在しなかったら差分要素を新規追加する[９]。
【００３７】
（図５）
続いて、マージルール記述ファイル３０の中から、先ほどのルールの下階層となるルール（子ルール）を１件読み出す[１０]。  そして、その子ルールである「/code」をXPathコンテキスト４０へ追加する[１１]。
全要素を結合し、差分検索XPathを作成し[１２]、差分検索XPath保持手段５８へ一時的に格納する。すなわち、ランダムアクセスメモリへ「/codedef/code」を記憶させる。
更に、この差分検索XPathを用いて、差分ＸＭＬ文書２０の該当箇所を検索する[１３]。該当箇所は、「code id="type" name="電話種類」である。
【００３８】
（図６）
差分ＸＭＬ文書２０の該当箇所として、差分検索XPathを検索し、該当する要素を発見する[１４]。  「code id="type" name="電話種類」には、key属性が定義されているので、XPathコンテキストに、XPath述語を追加する[１５]。すなわち、XPathコンテキストとして、「@id=“type“」を追加する。
続いて、全要素を結合し、既存検査XPathを生成し、既存検査XPath保持手段５７へ一時的に格納する[１６]。すなわち、ランダムアクセスメモリへ「/codedef/code[@id=“type”]」を記憶させる。
その既存検査XPathを用いて、基本XML文書１０の既存要素を検索する[１７]。  既存検査XPathを用いて基本XML文書１０を検索したとき、検索ヒットする要素が存在したら、同要素の属性値を差分XML文書の要素が持つ属性値で置き換え、または存在しなかったら差分要素を新規追加する[１８]。
【００３９】
（図７）
続いて、マージルール記述ファイル３０の中から、先ほどの子ルールの下階層となるルール（孫ルール）を１件読み出す[１９]。  そして、その孫ルールである「/value」をXPathコンテキスト４０へ追加する[２０]。
全要素を結合し、差分検索XPathを作成し、差分検索XPath保持手段５８へ一時的に格納する[２１]。すなわち、ランダムアクセスメモリへ「/codedef/code[@id=“type”]/value」」を記憶させる
更に、この差分検索XPathを用いて、差分ＸＭＬ文書２０の該当箇所を検索する[２２]。該当箇所は、「value code="1" name="自動車電話(廃止済)" /」である。
【００４０】
（図８）
差分検索XPathを用いて、差分XML文書２０より検索ヒットした要素である「value code="1" name="自動車電話(廃止済)"」(検索ヒット要素[1]という)および「value code="2" name="携帯電話"」(検索ヒット要素[2]という)を発見する[２３]。
検索ヒット要素[1]および[2]については、それぞれ以下の処理を実行する。
まず、ルールに定義されたkey属性にしたがい、差分XML文書２０における検索ヒット要素の属性値にて、XPath述語をXPathコンテキスト４０へ追加する[24] 。すなわち、XPathコンテキストとして、[@code=“1”]を追加する。
続いて、全要素を結合し、既存検査XPathを生成し、既存検査XPath保持手段５７へ一時的に格納する[２５]。すなわち、ランダムアクセスメモリへ「/codedef/code[@id=“type”]/value[@code=“]」を記憶させる。
その既存検査XPathを用いて、基本XML文書１０の既存要素を検索する[１７]。  既存検査XPathを用いて基本XML文書１０を検索したとき、検索ヒットする要素が存在したら、同要素の属性値を差分XML文書の要素が持つ属性値で置き換え、または存在しなかったら差分要素を新規追加する[２７]。
ここでは差分要素は基本XML文書１０に既存であるので、基本XML文書１０の既存要素の属性値「name=“自動車電話”」を差分要素「name=“自動車電話(廃止済み)”」で置き換えることとなる。
【００４１】
（図９）
つづいて、ルールに定義されたkey属性にしたがい、差分XML文書２０における検索ヒット要素[2]の属性値にて、XPath述語をXPathコンテキスト４０へ追加する[28] 。すなわち、XPathコンテキストとして、[@code=“2”]を追加する。
続いて、全要素を結合し、既存検査XPathを生成し、既存検査XPath保持手段５７へ一時的に格納する[２９]。すなわち、ランダムアクセスメモリへ「/codedef/code[@id=“type”]/value[@code=“2”]」を記憶させる。
【００４２】
その既存検査XPathを用いて、基本XML文書１０の既存要素を検索する[３０]。  既存検査XPathを用いて基本XML文書１０を検索したとき、検索ヒットする要素が存在したら、同要素の属性値を差分XML文書の要素が持つ属性値で置き換え、または存在しなかったら差分要素を新規追加する [３１]。ここでは差分要素は基本XML文書１０に存在しないので、差分要素「value code=“2” name=“携帯電話”」を基本XML文書１０に新規で追加することとなる。
【００４３】
前述した二つの実施形態を採用すれば、XML文書による基本ファイルについて、「個別カスタマイズ部分」ファイルの記述内容を最小限の差分のみとすることができる。そして、マージルール記述ファイル３０を階層化して処理することで、統合済みXML文書を自動的に生成できる。
たとえば、M社に対して基本XML文書１０をカスタマイズして提供していたとすると、そのM社差分XML文書２１を用いて、M社統合済みＸＭＬ文書５１を提供することができる（図１参照）。  Ｎ社に対する基本XML文書１０をカスタマイズして提供した場合も、同様である。
また、M社に対して基本XML文書１０をカスタマイズして提供した後、基本XML文書１０がバージョンアップした（１１から１２へ）とする。
この場合、M社差分XML文書２１に基づいて、バージョンアップした統合済み文書５３を自動的に生成することができる。
【００４４】
本実施形態を用いない場合には、「パッケージ基本部分」ファイルをもとにして「個別カスタマイズ部分」の内容を反映した「統合ファイル」を手作業で作成する必要がある。この場合には、後から「パッケージ基本部分」を改訂したとき、「統合ファイル」のどの箇所が基本部分で、どの箇所が個別カスタマイズ部分なのか判別不能となってしまう。  したがって、改訂する行為は、注意と十分な検証を要する作業となってしまうため、事実上は、極めて困難な作業となっていた。
【産業上の利用可能性】
【００４５】
本願発明は、インターネット接続サービス業、インターネットを介した情報サービス業、ＡＳＰ事業、ソフトウェア開発業、サーバなどの情報機器の製造業などにおいて、利用可能性を有する。
【符号の説明】
【００４６】
１０；基本ＸＭＬ文書                    １９；基本文書蓄積手段
２０；差分ＸＭＬ文書                    ２１；Ｍ社差分ＸＭＬ文書
２２；Ｎ社差分ＸＭＬ文書                ２９；対象文書入力手段
３０；マージルール記述ファイル          ３９；定義ファイル蓄積手段
４０；XPathコンテキスト                ４１；差分要素
４９；走査過程蓄積手段                  ５０；統合済みＸＭＬ文書
５１；Ｍ社統合済みＸＭＬ文書            ５２；Ｎ社統合済みＸＭＬ文書
５６；統合文書蓄積手段                  ５７；既存検査XPath保持縦断
５８；差分検索XPath保持手段            ５９；差分反映手段
６９；走査手段
【図１】
2014081886.tif 000003
【図２】
2014081886.tif 000004
【図３】
2014081886.tif 000005
【図４】
2014081886.tif 000006
【図５】
2014081886.tif 000007
【図６】
2014081886.tif 000008
【図７】
2014081886.tif 000009
【図８】
2014081886.tif 000010
【図９】
2014081886.tif 000011