(57)【要約】【課題】ユーザがＸＭＬ形式のデータを容易に検索し分析して活用できるようにした操作ボタンを、ＸＭＬデータから直接自動生成することができるようにする。【解決手段】記憶装置に記憶されているＸＭＬデータを基に、ＸＭＬデータテーブルを自動生成して記憶装置に記憶し、ＸＭＬデータを解析して自動生成したスキーマ定義とＸＭＬデータから抽出したい値をボタン化対象及び参照対象に分類した抽出対象とから構成されるボタン情報とをまとめてＸＭＬデータ構造定義テーブルとして記憶装置に記憶し、ＸＭＬデータからボタン情報に該当するデータを抽出し抽出対象に対応したフィールドとデータ単位に対応したレコードから成るボタン生成用ソースデータテーブルを自動生成して記憶装置に記憶し、フィールドに対応したボタンクラスと該フィールドに現れるユニークな値を個別ボタンとしたＸＭＬボタンを自動生成して表示装置に表示する。【選択図】図６
2008217408.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に記憶されているＸＭＬデータを基に、中央処理装置を使用して、
（１）ＸＭＬデータを構成する要素間の関連、要素と属性間の関連、及び要素と属性の持つ値からＸＭＬデータテーブルを自動生成して記憶装置に記憶し、
（２）前記ＸＭＬデータテーブルを参照しながら前記ＸＭＬデータの構造を解析してスキーマ言語で表したスキーマ定義を自動生成し、前記ＸＭＬデータを構成する要素の内のＸＭＬボタン生成対象の基準要素となるデータ単位と該データ単位のＸＭＬデータ構造上の子孫及び祖先の要素の値または要素の属性の値の内で前記ＸＭＬデータから抽出したい値をボタン化対象及び参照対象に分類した抽出対象とから構成されるボタン情報を形成し、前記スキーマ定義と前記ボタン情報をまとめてＸＭＬデータ構造定義テーブルとして記憶装置に記憶し、
（３）前記ＸＭＬデータ構造定義テーブルを参照して、前記ＸＭＬデータから前記スキーマ定義と関連付けて前記ボタン情報に該当するデータを抽出し、前記抽出対象に対応したフィールドと前記データ単位に対応したレコードから成るボタン生成用ソースデータテーブルを自動生成して記憶装置に記憶し、
（４）前記ボタン生成用ソースデータテーブルを基に前記フィールドに対応したボタンクラスを生成し、各フィールドに現れるユニークな値を個別ボタンとして当該フィールドに対応するボタンクラスに関連付けて、前記ボタンクラスと前記個別ボタンから構成されるＸＭＬボタンを自動生成して表示装置に表示する、
ことを特徴とするＸＭＬデータ用操作ボタン生成方法。
【請求項２】
前記ボタン情報は、前記データ単位の内、ＸＭＬデータから除外する除外インスタンスを有することを特徴とする請求項１記載のＸＭＬデータ用操作ボタン生成方法。
【請求項３】
前記表示装置に表示されたＸＭＬボタンは、ユーザが選択した個別ボタンに対応するデータを前記ボタン生成用ソースデータテーブルから取り出すのに使用されることを特徴とする請求項１または２記載のＸＭＬデータ用操作ボタン生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ形式で記載されたデータ（ＸＭＬデータ）を構成する要素、属性、及び要素と属性の値から、コンピュータに実行させる処理を指示するための操作ボタンを自動的に生成して表示装置に表示させるＸＭＬデータ用操作ボタンの生成方法に関する。
【背景技術】
【０００２】
通常、ＸＭＬを使用するソフトウェアは、そのソフトウェアがサポートするＸＭＬのスキーマのインスタンスを扱う。換言すれば、ＸＭＬ形式で記述されたデータ（ＸＭＬデータ）があった場合、そのデータを分析し活用するためには、そのＸＭＬのスキーマをサポートするソフトウェアを用意する必要がある。ＸＭＬ技術の普及に伴い、多種多様なスキーマのＸＭＬデータが氾濫している。しかしながら、それらの不特定なスキーマを持つＸＭＬデータを一貫した操作で分析し活用できるようにした仕組みは考えられていないのが現状である。
【０００３】
ユーザがデータを簡単に分析し活用するために、コンピュータ処理用操作ボタンをデータから自動生成する方法が既に開発されている（特許文献１参照）。この方法では、複数のフィールドから構成され、記憶装置に記憶されている複数のデータの任意のフィールドに対応させてボタンクラスを設定し、このボタンクラス毎に記憶装置に記憶されているデータの値をグループ化したボタングループとデータの値に対応させた個別ボタンとを設定し、これらのボタンクラス、ボタングループ及び個別ボタンをコンピュータ処理用操作ボタンとして表示装置に表示するようにしている。
【０００４】
しかしながら、特許文献１に記載の方法では、フィールドで構成されるレコード形式、或いはＣＳＶ形式のデータをソースデータとしているため、タグ等のマークアップにより記述されるＸＭＬ形式のデータを基に操作ボタンを直接自動生成することはできない。ＸＭＬデータを直接入力としなくても、ＸＭＬデータをフィールドで構成されるレコード形式のデータ等に変換することが考えられるが、この場合、専用のプログラム、ＸＳＬＴまたは手動によってデータを変換する必要があって、ユーザにとっての負担は大きい。
【０００５】
また、特許文献１に記載の方法では、（１）複数のフィールドで構成されるフラットなデータ構造を前提にしており、階層構造のデータを扱えない、（２）データ毎に可変の構成要素のデータ（全データでフィールド構成が同じでないデータ）を扱えない、（３）構成要素（フィールド）の追加や削除等のデータ構成の変更に柔軟に対応できない、という技術上の制約もあった。
【特許文献１】特許第２７０２４１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＸＭＬ形式で記載されたデータ（ＸＭＬデータ）を基に直接操作ボタンを自動生成するためには、次のような課題がある。
（１）構造化されたデータであるＸＭＬデータに対して、任意の位置にアクセスしてＸＭＬの内容を参照したり、変更したりする必要がある。このためには、ＸＭＬデータを解析し、ＸＭＬデータを構成する要素名、属性名、文字列値等を効率よく処理するため、入力されたＸＭＬデータの構成要素を確認する必要がある。
【０００７】
（２）ＸＭＬデータを構成する要素や属性の間の関係から構造を自動的に解析して、以降の操作ボタン生成に係る一連の処理を効率的に実施するため、ＸＭＬデータの構造を定義する必要がある。このためには、与えたＸＭＬのスキーマを効率よく把握するためのＸＭＬデータの構造を生成する必要がある。
【０００８】
（３）ＸＭＬデータから操作ボタン自動生成の対象にするデータ（データ単位）を識別するための要素（データ単位識別用要素）をユーザが指定できるようにする必要がある。このためには、（２）に基づいて、ＸＭＬデータの構造を表示装置に表示し、ユーザにデータの構造を確認してもらった後で、前記データ単位識別用要素をユーザが入力装置から指定できるようにする必要がある。
【０００９】
（４）前記データ単位を構成する要素や属性、及びデータ単位識別用要素に関連する祖先要素や属性の内、ボタン化するもの、及びボタン化しないがボタン操作以降も参照したいものをまとめて抽出対象と呼ぶと、抽出対象をユーザが指定できるようにする必要がある。このためには、（２）に基づいてＸＭＬデータの構造を表示装置に表示して抽出対象を入力し、入力内容をＸＭＬデータの構造と一緒に保存できるようにする必要がある。
【００１０】
（５）前記（１）〜（４）に基づいて、ＸＭＬデータから操作ボタンの基になるデータ、すなわち、前記抽出対象の要素や属性に対応したフィールドとそのデータを格納したボタン生成用ソースデータを生成する必要がある。
（６）前記ボタン生成用ソースデータを基に、操作ボタンを構成するボタンクラス、個別ボタンを内部処理で設定する必要がある。
【００１１】
本発明は上記課題に鑑みて成されたもので、ユーザがＸＭＬ形式のデータを容易に検索し分析して活用できるようにした操作ボタンを、ＸＭＬデータから直接自動生成することができるようにしたＸＭＬデータ用操作ボタンの生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のＸＭＬデータ用操作ボタン生成方法は、記憶装置に記憶されているＸＭＬデータを基に、中央処理装置を使用して、（１）ＸＭＬデータを構成する要素間の関連、要素と属性間の関連、及び要素と属性の持つ値からＸＭＬデータテーブルを自動生成して記憶装置に記憶し、（２）前記ＸＭＬデータテーブルを参照しながら前記ＸＭＬデータの構造を解析してスキーマ言語で表したスキーマ定義を自動生成し、前記ＸＭＬデータを構成する要素の内のＸＭＬボタン生成対象の基準要素となるデータ単位と該データ単位のＸＭＬデータ構造上の子孫及び祖先の要素の値または要素の属性の値の内で前記ＸＭＬデータから抽出したい値をボタン化対象及び参照対象に分類した抽出対象とから構成されるボタン情報を形成し、前記スキーマ定義と前記ボタン情報をまとめてＸＭＬデータ構造定義テーブルとして記憶装置に記憶し、（３）前記ＸＭＬデータ構造定義テーブルを参照して、前記ＸＭＬデータから前記スキーマ定義と関連付けて前記ボタン情報に該当するデータを抽出し、前記抽出対象に対応したフィールドと前記データ単位に対応したレコードから成るボタン生成用ソースデータテーブルを自動生成して記憶装置に記憶し、（４）前記ボタン生成用ソースデータテーブルを基に前記フィールドに対応したボタンクラスを生成し、各フィールドに現れるユニークな値を個別ボタンとして当該フィールドに対応するボタンクラスに関連付けて、前記ボタンクラスと前記個別ボタンから構成されるＸＭＬボタンを自動生成して表示装置に表示することを特徴とする。
【００１３】
これにより、ＸＭＬデータを基に、ＸＭＬデータを構成する要素や属性に対応させてボタンクラスを設定し、ボタンクラス毎に対応する要素や属性の値に対応させて個別ボタンを設定することによって、ＸＭＬデータの操作ボタンを自動生成して表示装置に表示することができる。また、ＸＭＬデータテーブルを自動生成することによって、ＸＭＬデータに対して、任意の位置にアクセスしてＸＭＬの内容を参照したり、変更したりできる。更に、ＸＭＬデータ構造定義テーブルを自動生成することによって、以降の操作ボタン生成に係る一連の処理を効果的に実施することができ、しかも、ボタン生成用ソースデータテーブルを自動生成することによって、ＸＭＬデータの操作ボタンを自動生成できる。
【００１４】
前記ボタン情報は、前記データ単位の内、ＸＭＬデータから除外する除外インスタンスを有することが好ましい。
これにより、一部の対象インスタンスを、ＸＭＬボタンによる分析対象から除外したいというニーズに応えることができる。
【００１５】
前記表示装置に表示されたＸＭＬボタンは、例えば、ユーザが選択した個別ボタンに対応するデータを前記ボタン生成用ソースデータテーブルから取り出すのに使用される。
これにより、ＸＭＬボタンをユーザに選択させるだけでＸＭＬデータが持つ情報を取り出すことができる。
【発明の効果】
【００１６】
本発明によれば、以下のような効果を享受できる。
（１）ＸＭＬデータから直接操作ボタンを自動生成できるので、ユーザがＸＭＬデータを容易に検索し分析し活用できるようになる。
（２）ＣＳＶ形式のデータに代表される、フィールドで構成されるレコードデータを使用すると、このデータでは階層構造を表現できない。ＸＭＬデータでは、階層構造を表現できるので、これを認識して階層構造のデータから任意のデータを抽出して、操作ボタンを自動生成することができるようになる。
【００１７】
（３）フィールドで構成されるレコードデータから操作ボタンを自動生成する場合は、フィールドの個数やレコード内での位置（配置順）が固定されているため、全てのデータが同一構成でなければならない。このため、該当する値がないフィールドのデータが多数発生する等、無駄なフィールド（空白）を含めて用意する必要がある。ＸＭＬデータでは、スキーマ（本発明におけるＸＭＬデータ構造定義テーブルのスキーマ定義部の記述）が許す範囲で、例えば任意の要素や属性を省略したり、出現順序を入れ替えたりすることができるので、効率よくＸＭＬデータの操作ボタンを自動生成できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を図面を参照して説明する。
本発明を実施するためのコンピュータシステム、すなわちＸＭＬデータ用ボタンシステムのハードウェアは、図１に示すように、中央処理装置１０、記憶装置１２、表示装置１４及び入力装置１６から主に構成されている。表示装置１４が出力用のユーザインターフェイスとなり、入力装置１６が入力用のユーザインターフェイスとなる。ユーザは、表示装置１４及び入力装置１６を使用して、後述するアプリケーション（ＸＭＬデータボタン処理プログラム）を通してＸＭＬデータ用ボタンシステムに指令を送る。
【００１９】
ＸＭＬデータ用ボタンシステムのソフトウェアは、ＸＭＬ形式で記載されたデータ（ＸＭＬデータ）を基に、操作ボタン（以降、ＸＭＬボタンという）を自動生成するために、図２に示すように、ＸＭＬ文書を、内容の参照や更新といった活用をしやすい形で記憶装置に展開し、外部の機能に対してそのＸＭＬが持つ情報に問い合わせる能力を有するＸＭＬパース機能２０と、入力されたＸＭＬ（入力ＸＭＬ）の内容をＸＭＬパース機能２０の能力を使って把握してスキーマを自動判断し、かつ入力ＸＭＬをどのように操作ボタン化するかを設定し、それらをＸＭＬデータ構造定義テーブルとして保存する能力を有する構造管理機能２２と、ＸＭＬデータ構造定義テーブルが持つ情報を基に入力ＸＭＬから操作ボタンを生成するためのデータを抽出しボタン生成用ソースデータテーブルに保存する能力を有するボタン生成用ソースデータ生成機能２４と、ボタン生成用ソースデータテーブルからボタンクラスと個別ボタンから成る操作ボタン（以降、ＸＭＬボタンという）を表示するボタン生成機能２６と、表示されたＸＭＬボタンをユーザに選択させるだけで入力ＸＭＬが持つ情報を取り出すことができる能力を有するボタン機能２８の５つの機能から構成される。
【００２０】
ＸＭＬパース機能２０、構造管理機能２２、ボタン生成用ソースデータ生成機能２４、ボタン生成機能２６、及びボタン機能２８を持つ情報処理装置及びプログラムを、総称してＸＭＬデータ用ボタンシステムと呼ぶ。
【００２１】
ＸＭＬデータ用ボタンシステムは、各機能を利用するための外部インターフェイスを公開し、アプリケーション（ＸＭＬデータボタン処理プログラム）３０は、そのインターフェイスを使用して、各機能と連携することにより、ＸＭＬデータを基にＸＭＬボタンを自動生成し、ユーザがボタン選択によってＸＭＬデータを分析したり活用したりする処理環境を提供する。
【００２２】
アプリケーション３０は、ＸＭＬデータ用ボタンシステムとユーザとの間に立ち、ユーザの要求をＸＭＬデータ用ボタンシステムの各機能に伝えたり、各機能の処理状況をユーザに示したり、ＸＭＬボタンのボタン操作の結果ユーザにとって特定の用途に向けた有効な処理を行ったりするプログラムである。以降、処理環境を提供するアプリケーション（ＸＭＬデータボタン処理プログラム）３０を単にアプリケーションと呼ぶ。
【００２３】
図２では、ある機能から別な機能への矢印が示されている。実線による矢印は、根もとの機能が先の機能を直接使用することを表す。破線による矢印は、根もとの機能が先の機能によって作成されるデータを参照する等、先の機能に間接的に依存することを表す。以下、各機能の概要を先ず説明する。
【００２４】
ＸＭＬパース機能２０は、入力されたＸＭＬデータ（入力ＸＭＬ）を解析し、その内容をＸＭＬデータテーブルに展開し、ＸＭＬデータテーブルを参照しながら他の機能からの入力ＸＭＬの内容に対する問い合わせに応える。ここで、ＸＭＬデータテーブルは、ＸＭＬを構成する任意の要素や属性、任意の要素や属性の相互関係等を保持し、ＸＭＬパース機能はこのデータテーブルに対するアクセス能力を他の機能に提供する。
【００２５】
構造管理機能２２とボタン生成用ソースデータ生成機能２４は、操作ボタンを生成するまでの過程において、入力ＸＭＬを参照するためにＸＭＬパース機能２０の能力を利用するので、本発明を構成する不可欠の機能であるが、ＸＭＬパース機能２０自身は、本発明の主体ではない。このような能力を有するのであれば、普及しているＸＭＬパーサによって代替できる。
【００２６】
構造管理機能２２は、「ＸＭＬデータ構造定義テーブル」の生成と管理を行う。ＸＭＬデータ構造定義テーブルは、スキーマ言語が記述された「スキーマ定義部」と、入力ＸＭＬを操作ボタンにする際の情報（以降、ＸＭＬボタン化条件と呼ぶ）が記述された「ボタン情報部」に分かれる。構造管理機能２２は、ＸＭＬパース機能２０を利用して入力ＸＭＬのスキーマを自動的に判断し、結果をスキーマ定義部に保存する。また、アプリケーション３０を介して自動決定されたスキーマをユーザに示し、必要に応じてユーザにスキーマの調整をさせてスキーマ定義部を更新する能力を持つ。更に、アプリケーション３０を介してスキーマ定義部に保存されているスキーマをユーザに示し、操作ボタン化する際の「データ単位」となる要素をユーザに指定させ、結果をボタン情報部に保存する能力を持つ。
【００２７】
ボタン生成用ソースデータ生成機能２４は、入力ＸＭＬを特定の構造を持つデータの集合と見なして処理を行うが、データ単位は、前記特定の構造を示し、データ単位の実体１件を「対象インスタンス」と呼ぶ。データ単位を決定することにより、入力ＸＭＬは、対象インスタンスの集合と見なすことができる。構造管理機能２２は、入力ＸＭＬ中でＸＭＬボタン化したくないものを対象インスタンスから除くために、ユーザにアプリケーションを介して「除外インスタンス」を指定させ、結果をボタン情報部に保存する能力を持つ。
【００２８】
入力ＸＭＬに関係するどのデータ値をボタン生成用ソースデータテーブルに出力するかを指定するものが「抽出対象」であるが、構造管理機能２２は、更に、抽出対象をユーザにアプリケーション３０を介して指定させ、結果をボタン情報部に保存する能力を持つ。データ単位の子孫要素または祖先要素のうち、ボタン生成用ソースデータテーブルに出力したいデータ値を持つもの、または前記要素に属して出力したいデータ値を持つ属性が抽出対象となることができる。抽出対象は、ボタン生成用ソースデータテーブルに出力すると同時にＸＭＬボタン化したい「ボタン化対象」と、ボタン生成用ソースデータテーブルに出力するだけでＸＭＬボタン化したくない「参照対象」の２種類がある。
【００２９】
ボタン生成用ソースデータ生成機能２４は、「ボタン生成用ソースデータテーブル」の生成を行う。ボタン生成用ソースデータテーブルは、ボタン生成機能２６に渡すためのデータ構造で、フィールドから構成されるレコードの集合から成るテーブルで実現される。
【００３０】
ボタン生成用ソースデータ生成機能２４は、ＸＭＬデータ構造定義テーブルに含まれるボタン情報部に記述された内容に従って、入力ＸＭＬからボタン生成用ソースデータテーブルを生成する処理を開始するが、まずボタン情報部で定義されているデータ単位の実体である対象インスタンスの候補を入力ＸＭＬから全て取り出す。続いて、ボタン情報部に定義されている除外インスタンスに該当するものを前記対象インスタンス候補から除き、最終的な対象インスタンスを決定する。
【００３１】
次に、ボタン生成用ソースデータ生成機能２４は、ボタン生成用ソースデータテーブルの実データであるレコードの生成を開始するが、ボタン情報部で指定されている抽出対象１個が前記テーブルのフィールド１個に対応する。ボタン情報部で指定されている抽出対象が複数あれば、前記抽出対象の入力ＸＭＬにおける親子関係を保持しつつ、データを取り出してレコードを生成し、各レコードのフィールド値を決定する。全ての対象インスタンスに関連する抽出対象を取り出し、レコードを生成してフィールド値を決定すると、ボタン生成用ソースデータ生成機能２４は、ボタン生成用ソースデータテーブルの生成を完了する。
【００３２】
ボタン生成機能２６は、ＸＭＬボタンを生成して表示する。ＸＭＬボタンは、ボタン生成用ソースデータ生成機能２４によって生成されたボタン生成用ソースデータテーブルを基にボタン生成機能２６によって自動生成される操作ボタンであり、前記操作ボタンは、「ボタンクラス」と「個別ボタン」から構成される。ボタンクラスは、ボタンクラス名称を持ち、ボタン生成用ソースデータテーブルのフィールドのうちボタン化対象として生成されたものが、ボタンクラスに対応する。「個別ボタン」は、ボタンクラスに属し、ボタン生成用ソースデータテーブルの当該ボタンクラスに対応するフィールドに現れるユニークな値が個別ボタンとなり、前記値が個別ボタン名称となる。各個別ボタンは、ボタン生成用ソースデータテーブルのどのレコードから生成されたかを記憶している。ボタンクラスは、当該ボタンクラスに属する個別ボタンをグループ化した形でボタン生成機能によって表示される。
【００３３】
ボタン機能２８は、表示している個別ボタンをユーザが選択するだけで、選択状況に応じて入力ＸＭＬ内のデータを抽出する能力を提供する。選択された個別ボタンは、ボタン生成用ソースデータテーブルのどのレコードから生成されたかを記憶しているので、ボタン機能２８は、ユーザが必要とするデータをボタン生成用ソースデータテーブルから取り出すことができる。取り出されたデータは、アプリケーション３０が自由に利用することができる。個別ボタン選択によってボタン生成用ソースデータテーブルのレコードが特定されるが、ボタン生成用ソースデータテーブルにはボタン化されていない参照対象から生成されたフィールドも存在するので、アプリケーション３０は、これらの参照も行うことが可能である。
【００３４】
つまり、ＸＭＬパース機能２０は、図３（ａ）に示すように、ボタン化したいＸＭＬデータを入力ＸＭＬ３２として受け取り、この入力ＸＭＬ３２を解析して、その内容をＸＭＬデータテーブル３４に展開する。そして、ＸＭＬパース機能２０は、入力ＸＭＬ３２を一度ＸＭＬデータテーブル３４に展開すると、図３（ｂ）に示すように、ＸＭＬデータテーブル３４を参照しながら、随時、外部機能３６からの入力ＸＭＬ３２の内容に対する問い合わせに応えたり、内容の更新を行ったりすることができる。
【００３５】
構造管理機能２２は、入力ＸＭＬを受け取り、入力ＸＭＬの構造を自動的に識別した情報を保持するスキーマ定義部と、ＸＭＬボタン化条件を保持するボタン情報部から成るＸＭＬデータ構造定義テーブルを生成する。ＸＭＬデータ用ボタンシステムにおいて、構造管理機能２２は、入力ＸＭＬの内容を参照するために、図２に示すように、ＸＭＬパース機能２０を使用する。
【００３６】
ボタン生成用ソースデータ生成機能２４は、入力ＸＭＬとＸＭＬデータ構造定義テーブルを受け取り、当該入力ＸＭＬを当該ＸＭＬデータ構造定義テーブルの内容に従って、ＸＭＬボタンにするために必要なデータであるボタン生成用ソースデータテーブルを生成するための機能であり、フィールドから構成されるレコードの集合データであるボタン生成用ソースデータテーブルを生成する。ＸＭＬデータ用ボタンシステムにおいて、ボタン生成用ソースデータ生成機能２４は、入力ＸＭＬの内容を参照し、構造管理機能２２が生成するＸＭＬデータ構造定義テーブルを必要とするので、図２に示すように、ＸＭＬパース機能２０を使用し、また構造管理機能２２に依存する。
【００３７】
ボタン生成機能２６は、入力としてボタン生成用ソースデータテーブルを受け取り、その内容を基にＸＭＬボタンを生成し表示装置に表示する。ＸＭＬデータ用ボタンシステムにおいて、ボタン生成機能２６は、ボタン生成用ソースデータ生成機能２４が生成するボタン生成用ソースデータテーブルを必要とするので、図２に示すように、ボタン生成用ソースデータ生成機能２４に依存する。
【００３８】
ボタン機能２８は、入力として、ユーザによるボタン選択情報を受け取り、その内容に従ってＸＭＬボタンの表示を更新したり、ボタン生成用ソースデータテーブルの情報を取り出したりする。ＸＭＬデータ用ボタンシステムにおいて、ボタン機能２８は、ボタン生成機能２６が生成するＸＭＬボタンを必要とし、またボタン生成用ソースデータ生成機能２４が生成するボタン生成用ソースデータテーブルを参照するので、図２に示すように、ボタン生成機能２６及びボタン生成用ソースデータ生成機能２４に依存する。
入力ＸＭＬの内容は、１個の電子ファイルに書かれて記憶装置に保存されている。表１に、本発明の実施の形態で使用する入力ＸＭＬの一例を示す。以下、この入力ＸＭＬを参照して説明する。
【００３９】
【表１】
2008217408.tif 000003
【００４０】
表１に示す例は、ある食品会社の営業員の営業成績を記録したものである。以降、この表１に示す入力ＸＭＬを「営業成績.xml」とし、コンピュータの記憶装置に保存されているものとする。尚、この例では、ＸＭＬ宣言を省略してある。また、以降でＸＭＬ中の特定の部分を指定する際には、XPathの表記法に準じた表記を行う。
【００４１】
表１に示す入力ＸＭＬ「営業成績.xml」で最初に現れる「社員」要素から、当該社員の情報が以下のように読み取れる。名前が“中村 里沙”、社員番号が“43001”の実績は、「地域＝“神奈川”、期間＝“2006年4月”、金額＝“2,500,000”」、同様に、「地域＝“埼玉”、期間＝“2006年4月”、金額＝“5,800,000”」、更に、「地域＝“埼玉”、期間＝“2006年5月”、金額＝“6,100,000”」である。また、「社員」要素の祖先階層の要素とその属性を見ると、“食品事業部”（組織階層１）の“菓子販売部”（組織階層２）に所属していることがわかる。
【００４２】
同様に、表１に示す入力ＸＭＬ「営業成績.xml」の最後に現れる「社員」要素から、当該社員の情報が以下のように読み取れる。名前が“横山 美雪”、社員番号が“41294”の実績は、「地域＝“神奈川”、期間＝“2006年5月”、金額＝“3,900,000”」で、“食品事業部”（組織階層１）の直属である。
【００４３】
表１に示す入力ＸＭＬ「営業成績.xml」は、図４で示すような構造を持つ。図４での記法は、以下の通りである。四角形のうち、左側が黒く塗りつぶされていないものは要素を表し、左側が黒く塗りつぶされているものは属性を表す。実線による矢印は、要素と要素を連結し、矢印の根もとにある要素は、その矢印の先にある要素を子として持つことを表す。実線による矢印には、数字またはアスタリスク（＊）が付属されている。数字が付属されている場合、親要素は、矢印の先の子要素をその数字に示された個数持つことを表す。アスタリスクが付属されている場合、親要素は、矢印の先の子要素を０個以上の任意の個数持つことを表す。破線による矢印は、要素と属性を連結し、矢印の根もとにある要素は、その矢印の先にある属性を持つことを表す。斜体字で名称が書かれた要素は、文字内容を持つ。
【００４４】
図４に示すように、トップレベル要素「営業成績」は、子要素として「組織階層＜ｎ＞」を任意個持つ。要素「組織階層＜ｎ＞」は、再帰的構造を成し、子要素として任意個の「組織階層＜ｎ＞」と１個の「社員リスト」を持ち、属性として「名前」を持つ。ここで「＜ｎ＞」は、現れる階層の深さに応じて決まる変数と見なす。「営業成績」要素の子要素として現れる「組織階層＜ｎ＞」は「組織階層１」となり、「組織階層１」の子要素として現れる「組織階層＜ｎ＞」は「組織階層２」となることを表す。要素「社員リスト」は、子要素として「社員」を任意個持つ。要素「社員」は、子要素として「名前」、「社員番号」、及び「実績リスト」をそれぞれ１個ずつ持つ。要素「実績リスト」は、子要素として「実績」を任意個持つ。要素「実績」は、子要素として「期間」及び「金額」をそれぞれ１個ずつ持ち、属性として「地域」を持つ。
【００４５】
図４に示していないが、次のような制約があるものとする。「//組織階層＜ｎ＞/＠名前」における属性、及び「//社員/名前」における要素の値は、任意の文字列である。「//社員番号」における要素の値、及び「//金額」における要素の値は、整数である。「//実績/＠地域」における属性は、売上が発生した地域名を値として取る。「//期間」における要素の値は、年月を表す日付文字列である。
【００４６】
以降の説明において、入力ＸＭＬ、ＸＭＬデータ構造定義テーブル、及びボタン生成用ソースデータテーブルを図示する場合、それぞれ図５に示した凡例に則る。すなわち、図５（ａ）は入力ＸＭＬ３２を、図５（ｂ）はＸＭＬデータ構造定義テーブル４０を、図５（ｃ）はボタン生成用ソースデータテーブル４２をそれぞれ示す。
【００４７】
入力ＸＭＬからＸＭＬボタンを生成し表示するまでの基本シーケンスを図６に示す。図６では、ユーザがアプリケーション３０を起動した後のシーケンスを表現している。図６での記法は、以下の通りである。
【００４８】
縦の破線は、当該破線の頂上に位置する機能（またはユーザ）が生存している区間を示す。また、破線の上から下に時間が進行するものとする。破線に載る縦長の四角形は、当該機能が実際に動作している区間（以降、活性区間と呼ぶ）を表す。ある機能の活性区間から別の機能の活性区間に延びる矢印は、根もとの機能が先の機能を使用することを表し、どのように使用するかを矢印の下に記述する。矢印に、図５で示すデータの凡例図が付加している場合は、機能の使用に際して当該データを必要とすることを表す。上に現れる矢印ほど、時間的に先に起こる事象であることを示す。各機能の詳細は後述するが、ここではＸＭＬボタンを生成し表示するまでの基本シーケンスを図６に従って説明する。
【００４９】
（１）ユーザは、アプリケーション３０に対して、まずＸＭＬデータ構造定義テーブルを作成するために入力ＸＭＬ３２を渡す。
（２）アプリケーション３０は、入力ＸＭＬ３２をユーザから受けると、ＸＭＬデータ構造定義テーブルのスキーマ定義部の自動生成を構造管理機能２２に要求する。その際、ユーザから受け取った入力ＸＭＬ３２を構造管理機能２２に渡す。構造管理機能２２は、受け取った入力ＸＭＬ３２からＸＭＬデータ構造定義テーブルのスキーマ定義部を自動的に生成する。この際、入力ＸＭＬ３２の内容を参照するため、随時、ＸＭＬパース機能２０を使用するが、図６では省略している。構造管理機能２２によってスキーマ定義部が自動生成されると、アプリケーション３０は、その定義情報を表示装置に表示する。
【００５０】
（３）ユーザは、表示装置に表示された情報を基に、必要に応じて、スキーマ定義部の調整を入力装置によってアプリケーション３０に指示する。また、ユーザは、ここでボタン化条件の指定も入力装置によってアプリケーション３０に指示する。
（４）アプリケーション３０は、ユーザから受けた指示を構造管理機能２２に伝え、構造管理機能２２は、調整要求に従ってスキーマ定義部を更新する。また、構造管理機能２２は、ユーザから伝えられた内容をＸＭＬデータ構造定義テーブルのボタン情報部に保存し、ＸＭＬデータ構造定義テーブルが完成する。ＸＭＬデータ構造定義テーブルが完成すると、ＸＭＬボタン生成のために必要なユーザ設定が完了したことになる。
【００５１】
（５）ユーザは、入力ＸＭＬ３２とこれに対応するＸＭＬデータ構造定義テーブル４０をアプリケーション３０に渡し、ボタン表示を要求する。
（６）アプリケーション３０は、ボタン表示に必要となるボタン生成用ソースデータテーブルを作成するために、ユーザから受け取った入力ＸＭＬ３２とＸＭＬデータ構造定義テーブル４０をボタン生成用ソースデータ生成機能２４に渡し、ボタン生成用ソースデータテーブルの生成を要求する。ボタン生成用ソースデータ生成機能２４は、受け取った入力ＸＭＬ３２とＸＭＬデータ構造定義テーブル４０からボタン生成用ソースデータテーブルを自動的に生成する。この際、入力ＸＭＬ３２の内容を参照するため、随時、ＸＭＬパース機能２０を使用するが、図６では省略している。
【００５２】
（７）ボタン生成用ソースデータテーブルが完成すると、アプリケーション３０は、次に、ボタン生成用ソースデータテーブル４２をボタン生成機能２６に渡し、ボタン生成を要求する。ボタン生成機能２６は、受け取ったボタン生成用ソースデータテーブル４２から、ＸＭＬボタンを自動的に生成して表示装置に表示する。
【００５３】
（８）ＸＭＬボタンの生成と表示が完了すると、ユーザは、表示されたＸＭＬボタンを入力装置で操作する。
（９）アプリケーション３０は、ボタン機能２８を使いながら、ユーザによるボタン操作に応じて、ＸＭＬボタンの再表示を行う。
【００５４】
アプリケーション３０は、ＸＭＬボタン操作に応じて、２次的な効果をもたらす環境をユーザに提供するが、本発明の範囲外となるので、これ以上言及しない。
図６では、ユーザがアプリケーション３０を使用してＸＭＬデータ用ボタンシステムの各機能に処理を要求する場合の基本シーケンスを示したが、各機能について、以下に詳細に説明する。
【００５５】
１．ＸＭＬパース機能
ＸＭＬパース機能２０は、図３（ａ）に示すように、ボタン化したいＸＭＬを入力ＸＭＬ３２として受け取ると、入力ＸＭＬ３２を解析し、その内容をＸＭＬデータテーブル３４に展開する。図３（ｂ）に示すように、ＸＭＬパース機能２０が外部機能３６からの入力ＸＭＬ３２の内容に対する問い合わせに応えるため、ＸＭＬデータテーブル３４には、入力ＸＭＬ３２を構成する全ての要素や属性の相互関係や位置関係等の情報が格納される。ＸＭＬパース機能２０は、任意要素の子要素数、任意要素の子要素リスト、任意要素に属する属性リスト、任意要素に属する任意属性の値、任意の名称を持つ要素のリスト等の情報を、ＸＭＬデータテーブル３４を参照することによって得ることができ、また他の機能からの同様の問い合わせに応えることができる。
【００５６】
ＸＭＬパース機能２０は、図３（ｂ）に示すように、ＸＭＬデータテーブル３４を参照することによって、入力ＸＭＬ３２内の任意の要素や属性の値を変更したり、任意の要素や属性に新規の要素や属性を追加したりするといった編集能力を持ち、また、他の機能がこれらの能力を駆使して自由に既存のＸＭＬを編集したり、新規のＸＭＬを作成したりすることもできる。
【００５７】
以上の能力を有するのであれば、普及しているＸＭＬパーサによってＸＭＬパース機能２０を代用することも可能である。本発明では、ＸＭＬボタン生成に用途を絞ってＸＭＬデータテーブル３４の構成（要素）を特定している点が、通常のＸＭＬパーサとは異なる。
【００５８】
次に、ＸＭＬデータテーブルの実現方法について、図７〜図９を参照して説明する。ＸＭＬは、要素をノードとし、文書要素をルートとするツリー（木構造）と見なすことができる。また、属性は、要素を表すノードに依存するが、木構造から独立したノードと見なすことができる。
【００５９】
例えば、表１に示す入力ＸＭＬ「営業成績.xml」は、図７に示すようなツリーで表現できる。ただし、図７では、文書要素を含めて上位３階層までの要素に絞って表示し、残りは省略している。図７に示す四角形がノードであり、要素ノードは、子要素ノードに実線で連結している。また要素が属性を持つ場合、破線で当該属性ノードに連結している。図７の最上部のノード「営業成績」は、「営業成績.xml」の文書要素を表す。「営業成績」要素は、「組織階層１」の１個の子要素を持ち、図７では、それぞれを表すノードに実線で連結することによりその関係が示されている。「組織階層１」要素は、「名前」属性を持つので、当該属性を表すノードに破線で連結することによりその関係が示されている。また、「名前」属性は“食品事業部”の値を持つことも図示してある。更に、「組織階層１」要素は、「名前」属性として“菓子販売部”の値を持つ「組織要素２」、「名前」属性として“健康食品販売部”の値を持つ「組織要素２」、及び「社員リスト」の３個の子要素に実線で連結している。
【００６０】
入力ＸＭＬをツリー構造で管理するためのデータ構造として、図８（ａ）に示すノード構造と、図８（ｂ）に示すノードリスト構造が考えられる。ノード構造は、ツリーのノードを表すデータ構造で、図示の例では、（１）タイプ（要素か属性か）、（２）ノードの名称を表す文字列、（３）ノードの値を表す文字列、（４）子要素リストを表すノードリスト構造、（５）属性リストを表すノードリスト構造、及び（６）親要素を表すノード構造への参照の６つのエリアを持つ。ノードリスト構造は、複数のノードへの参照を表す可変長のデータ構造で、図示の例では、参照するノードの個数を表す整数と、ノードへの参照をノードの個数分持つ。
【００６１】
例えば、図７に示す「営業成績.xml」の文書要素「営業成績」を、図８（ａ）に示すノード構造で表すと、図９（ａ）に示すようになる。すなわち、文書要素は要素なので、タイプは「要素」となる。ノードの名称は、要素名称である「営業成績」となる。文字内容を持たないので、値は空となる。１個の子要素を表すノードリスト構造を持ち、０個の属性を表すノードリスト構造を持つ。ルートなので親要素ノード構造への参照は空となる。
【００６２】
文書要素の子要素を表すノードリスト構造は、図９（ｂ）に示すように、文書要素の子要素が１個なので、個数は１となり、１個の子要素を表すノード構造への参照を持つ。唯一のノード構造への参照は、文書要素の唯一の子要素（「名前」属性が“食品事業部”の「組織階層１」要素）を表すノード（ノード１）を示す。属性の子要素を示すノードリスト構造は、図９（ｃ）に示すように、個数が０となり、ノード構造への参照を持たない。
【００６３】
文書要素の唯一の子要素を表すノード構造は、図９（ｄ）に示すように、タイプが「要素」で、ノードの名称が「組織階層１」で、値が空で、３個の子要素を表すノードリスト構造を持ち、１個の属性を表すノードリスト構造を持つ。親要素は文書要素なので、当該要素を表すノード構造への参照を持つ。
【００６４】
ＸＭＬデータテーブルを、以上のようなノード構造とノードリスト構造の集合から構成されるデータとして実現すると、入力ＸＭＬに含まれるあらゆる情報を得ることができる。また、ノード構造とノードリスト構造の値を変更したり、前記構造を新たに生成したりすることによって、ＸＭＬの内容の変更や新規ＸＭＬの作成を行うことができる。
【００６５】
２．構造管理機能
構造管理機能２２は、ＸＭＬデータ構造定義テーブルの生成や更新を行う。ＸＭＬデータ構造定義テーブルは、入力ＸＭＬの構造及びＸＭＬボタン化条件を記述したデータである。構造管理機能２２は、入力ＸＭＬを読み込んでその構造を解析して、自動的にＸＭＬデータ構造定義テーブルのスキーマ定義部を生成する。ＸＭＬデータ構造定義テーブルは、例えば、それ自体をＸＭＬによって記述するようにしてもよい。この例の場合、入力ＸＭＬを読むのに加え、ＸＭＬデータ構造定義テーブルを生成するため、ＸＭＬパース機能２０を必要とする。スキーマ定義部の自動生成方法については後述する。
【００６６】
以下、構造管理機能２２が、入力ＸＭＬとして「営業成績.xml」を受け取った場合、自動生成するＸＭＬデータ構造定義テーブルを、記憶装置にファイル「営業成績.xdst」として保存し、また、ＸＭＬデータ構造定義テーブルをＸＭＬで記述した場合を例にとって説明する。表２は、ＸＭＬ構造定義テーブルの構成を示す。
【００６７】
【表２】
2008217408.tif 000004
【００６８】
表２に示すように、文書要素に「ＸＭＬデータ構造定義テーブル」がある。その子要素として、スキーマ定義に関する情報が子孫要素または属性に記述される「スキーマ定義部」と、ボタン情報に関する情報が子孫要素または属性に記述される「ボタン情報部」が配置される。「スキーマ定義部」要素、及び「ボタン情報部」要素についての詳細は後述する。
【００６９】
スキーマ定義部は、入力ＸＭＬの構造を定義するための、ＸＭＬのスキーマ言語としての役割を持つ。すなわち、入力ＸＭＬに現れる各要素がどのような要素を子に持つか、どのような値を取るか、どのような属性を持つか、前記属性はどのような値を取るか、といった情報がスキーマ定義部に記述される。ＸＭＬデータ用ボタンシステムは、スキーマ定義部に記述された構文に従ったＸＭＬであれば、異なる入力ＸＭＬでも同一の構造を持つと判断する。
【００７０】
構造管理機能２２が、表１に示す入力ＸＭＬ「営業成績.xml」を基に、その構造を解析し、ＸＭＬのスキーマを自動生成していくプロセスを、図１０〜図１５を参照して段階的に説明する。
【００７１】
構造管理機能２２は、スキーマ自動生成の最初の段階として、要素構造の連続性の判断を行う。要素構造の連続性の判断とは、共通の親要素を持つ２個以上の要素（兄弟要素）同士が、互いに構造が同一かどうかを見極め、同一ならば、前記親要素の子としては当該構造の要素が任意個連続して現れる可能性があると判断することである。ここでは、２個以上の要素がそれぞれ同じ要素名称を持ち、同じ名称の属性を持ち、子孫要素を持つならば同じ順序で同じ名称の子孫要素とそれに属する属性を同じ名称で持つ場合、前記２個以上の要素を同一構造と見なす。構造が同一かどうかの判断は、ＸＭＬデータテーブルのツリー表現におけるリーフに近い要素から順に行う。
【００７２】
この例では、表１に示す入力ＸＭＬ「営業成績.xml」は、図３（ａ）に示すように、ＸＭＬパース機能２０によって、ＸＭＬデータテーブル３４に展開される。ＸＭＬデータテーブルのうち、「営業成績.xml」に現れる最初の「社員」要素の部分は、図１０に示すように展開される。尚、以降の解説で参照しやすいように、図１０では「社員/実績リスト/実績」要素には、XPathの述部を表す文字列（角括弧とその中身）を記述している。
【００７３】
図１０において、「社員/実績リスト/実績［１］/期間」と「社員/実績リスト/実績［１］/金額」は、互いに兄弟要素だが、要素名称が異なるので、同じ構造ではない。「社員/実績リスト/実績［２］」の子要素２個も同様に同じ構造ではない。「社員/実績リスト/実績［３］」の子要素２個も同様に同じ構造ではない。「社員/実績リスト/実績［１］」、「社員/実績リスト/実績［２］」及び「社員/実績リスト/実績［３］」は、互いに兄弟要素であり、同じ要素名称「実績」を持ち、同じ名称の属性「地域」を持ち、同じ名称の子要素「期間」と「金額」を同じ順序で持つので、同じ構造である。よって、「社員/実績リスト」の子として、「実績」要素が任意個連続して現れる可能性があると判断される。「社員/名前」と「社員/社員番号」と「社員/実績リスト」は、互いに兄弟要素だが、要素名称が異なるので、同じ構造ではない。
【００７４】
このように、「営業成績.xml」の全てに対して要素構造の連続性判断を行った結果を、図１１に示す。図１１は、スキーマを表し、この時点でのスキーマは、例えば次のような性質を持つ。文書要素「営業成績（/営業成績）」の子要素として「組織階層１（/営業成績/組織階層１）」が１個出現し、「営業成績」は他に子要素を持たない。「組織階層１」は「名前」属性を持ち、子要素として「組織階層２（/営業成績/組織階層１/組織階層２）」が任意個連続して現れる可能性がある。「組織階層２」要素は、「名前」属性を持つ。
【００７５】
図１１に示すスキーマは、一般的なツリー（木構造）に見立てることができるが、このツリーを要素構造ツリーと呼ぶ。要素構造ツリーでは、ツリーを構成する各要素をノードとし、属性はノードと見なさない。最も左上（先頭）のノードをルートとする。また、子ノードを持たないノードをリーフと呼ぶ。具体的には、図１１において、ルートは「/営業成績」要素である。「//組織階層１/＠名前」や「//組織階層２/実績/＠地域」等は属性なので、要素構造ツリーにおいてノードではない。「//組織階層１/社員リスト/社員/名前」や「//組織階層２//期間」等はリーフである。
以降のスキーマ自動生成は、ＸＭＬデータテーブルのツリーではなく、要素構造ツリーを参照しながら行う。
【００７６】
構造管理機能２２は、スキーマ自動生成の第２段階として、異なる要素下に出現する要素間での構造同一性の判断を行う。異なる要素下に出現する要素間での構造同一性の判断とは、互いに兄弟ではない要素同士の構造が同一かどうかを見極め、同一ならば要素構造ツリーから同一な部分の冗長性を省いていくことである。ここでは、着目対象の２個以上の要素がそれぞれ同じ要素名称を持ち、同じ名称の属性を持ち、子要素を持つならば同じ順序で同じ名称の子孫要素とそれに属する属性を同じ名称で持つ場合、前記２個以上の要素を同一構造と見なす。構造が同一かどうかの判断は、図１１に示す要素構造ツリーのツリー表現におけるリーフに近い要素から順に行い、リーフでかつ属性を持たない要素は判断対象から外す。
【００７７】
例えば、図１１に示す要素構造ツリーにおいて、「//組織階層１/社員リスト//期間」や「//組織階層２//社員/名前」等は、リーフでかつ属性を持たない要素なので、判断対象から外す。最初の判断対象要素は、「//組織階層１/社員リスト//実績」と「//組織階層２//実績」である。どちらも要素名称が「実績」で、いずれの「実績」要素も「期間」と「金額」という同じ名称の２個の子要素を持ち、いずれの「実績」要素も「地域」という同じ名称の属性を持つ。よって構造管理機能２２は、「//組織階層１/社員リスト//実績」と「//組織階層２//実績」が互いに同一構造を持つと判断する。
【００７８】
図１２は、「//組織階層１/社員リスト//実績」と「//組織階層２//実績」において、「実績」要素以下の構造を同一と判断した結果を図示したものである。図１２（ａ）において、両「実績」要素の部分が、枠が破線となって「実績：［構造１］」と表記されているが、これは、「［構造１］」という外部の構造を参照し、要素名が「実績」であるという意味である。どちらも同じく「実績：［構造１］」となっているので、同一構造かつ同一名称であることを示している。［構造１］は、図１２（ｂ）に示すように、「［構造１］」と表記された二重線四角形をルートノードとする別に設定したツリーによって、図１２（ａ）に示す、ルートが文書要素「営業成績」の要素構造ツリーとは独立して保持される。このように、別に設定したツリーを要素構造サブツリーと呼ぶ。また、要素構造ツリーから要素構造サブツリーを取り出すことを正規化と呼ぶ。
【００７９】
以下、図１２（ａ）で示す「実績：［構造１］」のような要素構造サブツリーを参照するノードを、属性を持たないリーフ要素と見なして、異なる要素下に出現する要素間での構造同一性の判断を進めていく。従って、前記「実績：［構造１］」は、構造同一性の判断対象から除外されることになって、最もリーフに近いものに着目すると、「//組織階層１/社員リスト//実績リスト」と「//組織階層２//実績リスト」となる。これらは、要素名が「実績リスト」で同一名称であり、子要素として同一構造の「実績：［構造１］」を持ち、属性を持たない。よって構造管理機能２２は、「//組織階層１/社員リスト//実績リスト」と「//組織階層２//実績リスト」が互いに同一構造を持つと判断する。
【００８０】
図１３は、「//組織階層１/社員リスト//実績リスト」と「//組織階層２//実績リスト」において、「実績リスト」要素以下の構造を同一と判断した結果を図示したものである。つまり、図１３（ａ）に示す文書要素「営業成績」の要素構造ツリーは、図１３（ｂ）に示す、ルートノード［構造２］の要素構造サブツリーを参照し、ルートノード［構造２］の要素構造サブツリーは、図１３（ｃ）に示す、［構造１］の要素構造サブツリーを参照する。構造管理機能２２は、図１１〜図１３で示す、異なる要素下に出現する要素間での構造同一性の判断に関する処理を、以降も同一構造が発見できなくなるまで続ける。最終的に、構造管理機能２２は、入力ＸＭＬ「営業成績.xml」のデータ構造を、前記同一構造を要素構造サブツリーとその参照に置き換えながら、図１４に示す状態まで正規化する。
【００８１】
正規化の最後の過程として、要素構造ツリーのノードのうち、属性を持つもの、またはリーフでないものに着目し、リーフに近いものから順に全て要素構造サブツリー参照に変換する。更に、構造管理機能２２は、要素構造ツリーのルートノード（文書要素）も要素構造サブツリー参照に変換し、ＸＭＬのスキーマ自動生成のプロセスを完了する。
【００８２】
具体的には、図１４では、同一構造を要素構造サブツリー参照に置き換える処理が完了した状態を示しており、ここでは、図１４（ａ）に示す、「組織階層２」と「組織階層１」がこの順で正規化の最後の着目対象の要素となる。つまり、これらの要素は、図１４（ｂ）に示す、ルートノード［構造４］の要素構造サブツリーを参照し、ルートノード［構造４］の要素構造サブツリーは、図１４（ｃ）に示す、［構造３］の要素構造サブツリーを参照する。ルートノード［構造３］の要素構造サブツリーは、図１４（ｄ）に示す、［構造２］の要素構造サブツリーを参照し、ルートノード［構造２］の要素構造サブツリーは、図１４（ｅ）に示す、［構造１］の要素構造サブツリーを参照する。
【００８３】
更に、要素構造ツリーのルートノードである「営業成績」も要素構造サブツリー参照とすると、図１５に示すようになり、これでＸＭＬのスキーマ定義部を自動生成するための一連の処理が完了する。つまり、図１５（ａ）に示す「営業成績」は、図１５（ａ）〜図１５（ｈ）に示す、合計７個の要素構造サブツリー参照に順次変換される。
【００８４】
表３は、データ構造の正規化を完了した図１５に示す状態から自動生成したＸＭＬデータ構造定義テーブルのスキーマ定義部の例（ＸＭＬ形式で保存したもの）を示す。尚、この実施の形態では、スキーマ定義部をXML Schema 1.0に似た文法で表現し、XML Schema 1.0の文法と異なる部分については、その都度説明する。
【００８５】
【表３】
2008217408.tif 000005
【００８６】
表３に示す「スキーマ定義部」要素の下では、「element」、「complexType」、「sequence」及び「attribute」の要素が現れているが、これらの４種類の要素は、それらの属性も含め、XML Schema 1.0のものと同じ構造と意味を持つ。ただし、「element」、「complexType」及び「attribute」の要素の属性として現れる「id」は、本発明独自のものである。前記「id」属性は、ＸＭＬデータ構造定義テーブルのボタン情報部からスキーマ定義部の内容を参照する際に使われ、その値はスキーマ定義部中でユニークである。具体的には、入力ＸＭＬ「営業成績.xml」から自動生成したＸＭＬデータ構造定義テーブルの「スキーマ定義部」要素の子で最初に現れているのが「element」要素であるが、これは、図１５（ａ）における要素構造ツリーに対応する。
【００８７】
また、「スキーマ定義部」要素の子として現れている要素は、前記「element」以外の全てが「complexType」であるが、これらは、図１５（ｂ）〜図１５（ｈ）に示す７個の要素構造サブツリーにそれぞれ対応する。７個の要素構造サブツリーのうち、図１５（ｂ）に示すルートノード「［構造７］」の要素構造サブツリーは、「スキーマ定義部」の子要素で「name＝"構造７"」という属性を持つ「complexType」に対応する。他の要素構造サブツリーと「スキーマ定義部」の子要素である「complexType」との対応関係も同様である。
【００８８】
「complexType」要素は、「name」属性で示される構造の定義を行う。「element」要素は、「name」属性で示される名称の要素が「type」属性で示される構造で現れることを指定する。「type」属性の値には、「complexType」要素の「name」属性を指定することにより、当該「complexType」の構造を参照することができる。更に、「type」属性の値には、XML Schema 1.0に組み込みの単純型（“string”（文字列）や“decimal”（数）等）を指定することができる。「complexType」要素は、子として「sequence」要素を持つ。更にその子として「element」要素を持つが、これは前述の「element」と同じである。すなわち、当該「complexType」を表す構造の子として、「name」属性で示される名称の要素が「type」属性で示される構造で現れることを指定する。「sequence」は、現れる要素の順序を制限するために指定する。「complexType」は、子として「attribute」要素を更に持つことがあるが、これは、当該「complexType」が「name」属性で示される名称の属性が「type」属性で示される構造で現れることを表す。「type」属性の値には、XML Schema 1.0に組み込みの単純型を指定することができる。
【００８９】
具体的には、「id」属性に“ct1”を持つ「complexType」要素とその属性は、「“構造７”の構造をここで定義する」ということを表している。「id」属性に“el1”を持つ「element」要素とその属性は、「“構造７”の構造を持つ“営業成績”という名称の要素が現れる」ということを表していて、ここでの“構造７”は、前記「complexType」の構造を参照することを示す。これは、図１５（ａ）において、要素構造ツリーのルートノード「営業成績：［構造７］」が、要素構造サブツリー「［構造７］」を参照していることに対応する。また、前記「complexType」の子孫として現れる「sequence」要素と「element」要素とその属性は、「当該complexType（“構造７”）には、“構造６”を持つ“組織階層１”という名称の要素が現れる」ということを表す。これは、図１５（ｂ）において、ルートノードとして「［構造７］」を持つ要素構造サブツリーの子ノード「組織階層１：［構造６］」が、別の要素構造サブツリー「［構造６］」を参照していることに対応する。更に、「id」属性に“ct7”を持つ「complexType」は、「当該complexType（“構造１”）には、string（文字列）値を持つ“期間”という名前の要素とdecimal（数）値を持つ“金額”という名前の要素が、この順序で現れ、更に当該complexTypeには、string値を持つ“地域”という名前の属性が付加される」ということを表す。
【００９０】
スキーマ定義部に現れる「element」要素のうち、「id」属性に“el3”を持つもののように、「minOccurs」属性と「maxOccurs」属性を持つものがある。それぞれ、入力ＸＭＬにおいて、当該「element」が定義する要素の出現数の下限と上限を指定するものである。値に数を指定するとその数を下限また上限の値として指定する。「maxOccurs」の値に“unbounded”を指定すると、出現数上限を指定しない。すなわち、「minOccurs＝"0"  maxOccurs＝"unbounded"」の属性を持つ「element」は、「任意回数出現する」ことを表す。
【００９１】
構造管理機能２２によるスキーマ定義部の自動生成が完了すると、アプリケーションは、生成されたスキーマの構造を表示装置に表示する。ユーザは、表示されたスキーマの構造を見ながら、必要に応じて自動生成されたスキーマに調整を加えることができる。ここでいう調整とは、任意の要素や属性に対する、省略可能性の指定、出現数の上限及び下限の指定、及び出現順の指定等であり、ユーザは、スキーマを調整することによって、より柔軟なスキーマを定義することができる。構造管理機能２２は、アプリケーションを介してユーザからのスキーマ調整要求を受けると、ＸＭＬデータ構造定義テーブルのスキーマ定義部に適用する。前記の調整事項について、上限及び下限は、スキーマ定義部における前述の「element」要素の「minOccurs」属性及び「maxOccurs」属性によって表現可能である。また、省略可能性や出現順の指定もXML
Schema 1.0の書式によって表現できる。
【００９２】
構造管理機能２２が自動生成したスキーマ定義部では、図１５（ａ）に依れば、［構造７］の子要素は、１個の組織階層１：［構造６］である。ここで、ユーザは、表示装置を見て、［構造７］の子要素として「組織階層１」要素を任意数個許容するようにアプリケーションを介して構造管理機能２２に指示したとする。また、構造管理機能２２が自動生成したスキーマ定義部では、ＸＭＬ表現でid属性値に「el8」を持つ「社員番号」要素の型として、数値を表す「decimal」が指定されている。ここで、ユーザは、表示装置を見て、「社員番号」要素の型を文字列に変更するようにアプリケーションを介して構造管理機能２２に指示したとする。すると、構造管理機能２２は、スキーマ定義部のＸＭＬ表現における当該「complexType」要素２個を表４のように更新し、アプリケーションは表示装置の内容を最新に更新する。
【００９３】
【表４】
2008217408.tif 000006
【００９４】
以上で、ＸＭＬデータ構造定義テーブルのスキーマ定義部の自動生成及びユーザによる調整が完了する。
表２に示すＸＭＬ構造定義テーブルのボタン情報部は、入力ＸＭＬのＸＭＬボタン化条件を保持する。ボタン化条件には、「データ単位」、「除外インスタンス」及び「抽出対象」があり、アプリケーションを介してユーザに指定させる。ボタン化条件のうち、データ単位と抽出対象はスキーマ定義の内容から、除外インスタンスは入力ＸＭＬの内容から指定される。以下、「データ単位」、「除外インスタンス」及び「抽出対象」について説明する。
【００９５】
２．１  データ単位
後述するボタン生成用ソースデータ生成機能２４は、入力ＸＭＬを特定の構造を持つデータの集合と見なして処理を行うが、データ単位は、この特定の構造を示す。データ単位となることができるのは、スキーマ定義部における「complexType」または「element」である。入力ＸＭＬにおいて、データ単位に対応する実際の要素を、「対象インスタンス」と呼ぶ。例えば、入力ＸＭＬ「営業成績.xml」から生成したスキーマ定義部において、「id」属性に“ct3”を持つ構造をデータ単位として指定すると、前記入力ＸＭＬの対象インスタンスは、「//組織階層２［＠名前＝'菓子販売部'］」と「//組織階層２［＠名前＝'健康食品販売部'］」の２個の要素である。
【００９６】
以下、入力ＸＭＬ「営業成績.xml」から生成したスキーマ定義部のＸＭＬ表現において、「id」属性に“ct5”を持つ構造が、ユーザによってデータ単位として指定されたものとして説明する。すると、対象インスタンスは、「//社員［名前＝'中村 里沙'］」と「//社員［名前＝'山本 弘'］」と「//社員［名前＝'中田 隆史'］」と「//社員［名前＝'高橋 雅人'］」と「//社員［名前＝'横山 美雪'］」の５個の要素である。
データ単位は、ＸＭＬボタン化条件の中で最も基本的なものであり、後述するように他のＸＭＬボタン化条件に深く関わるので、他のＸＭＬボタン化条件より先に指定される必要がある。
【００９７】
２．２  除外インスタンス
データ単位として指定した構造に該当する対象インスタンスは、この段階で入力ＸＭＬに現れるもの全てである。しかし、一部の対象インスタンスを、ＸＭＬボタンによる分析対象から除外したいニーズも考えられる。このような場合に、除外インスタンスを指定することによって対応する。除外インスタンスは、入力ＸＭＬに対するXPathで指定し、前記XPathに該当する要素は、対象インスタンスから除かれる。
【００９８】
例えば、前述の例では、「id」の値に“ct5”を持つ構造をユーザがデータ単位と指定することにより、「営業成績.xml」に出現する全「社員」要素が対象インスタンスとなる。しかし、食品事業部直属の社員のデータは対象インスタンスとしたくないとする。そのような場合、除外インスタンスをXPath「//組織階層１/社員リスト/社員」として指定する。前記XPathに該当する要素は、「//社員［名前＝'高橋 雅人'］」と「//社員［名前＝'横山 美雪'］」の２個であり、これらはボタン生成用ソースデータテーブル生成時に対象インスタンスから除かれる。
【００９９】
２．３  抽出対象
入力ＸＭＬに含まれる情報のうち、どれをボタン生成用ソースデータテーブルに出力するかを指定するものが抽出対象である。抽出対象のうち、ボタン生成用ソースデータテーブルに出力すると同時にＸＭＬボタン化したいものを「ボタン化対象」と呼び、ボタン生成用ソースデータテーブルに出力するだけでＸＭＬボタン化したくないものを「参照対象」と呼ぶ。抽出対象は、スキーマ定義部で定義されている要素または属性で指定する。
【０１００】
抽出対象として、データ単位の祖先要素とその属性、子孫要素とその属性、及びデータ単位自身の要素とその属性のいずれかを指定することができる。ただし、要素はそれ自身が値を持つものでなければ抽出対象として指定できない。
【０１０１】
例えば、“ct5”をデータ単位とした場合、データ単位は、図１５（ｆ）に示す［構造３］に対応する。［構造３］の子孫要素のうち、値を持つ、［構造３］の子要素の「名前」と「社員番号」、及び［構造１］の子要素の「期間」と「金額」が抽出対象となることができる。［構造３］の祖先要素には、値を持つものがないので、祖先要素は抽出対象になることができない。また、［構造３］の祖先要素の属性または子孫要素の属性である、［構造６］の「名前」、［構造５］の「名前」、及び［構造１］の「地域」が抽出対象となることができる。
【０１０２】
抽出対象１個は、ボタン生成用ソースデータテーブルのフィールド１個に対応する。ボタン生成用ソースデータテーブルに出力する際のフィールド名称も同時に指定できる。抽出対象をどのようにボタン生成用ソースデータテーブルに出力するかは、ボタン生成用ソースデータ生成機能で説明する。
【０１０３】
ユーザは、ここでアプリケーションを介して、例えば、「営業成績.xml」から生成されたスキーマ定義部のＸＭＬ表現における「id」属性の値として“at2”、“el7”、“at3”、及び“el11”を持つ要素及び属性をボタン化対象とし、同じく「id」属性の値として“el12”を持つ要素を参照対象として指定したとする。同時に、指定したそれぞれの抽出対象のボタン生成用ソースデータテーブルのフィールド名として「所属」、「社員名」、「地域」、「実績月」、及び「金額」を指定したとする。
【０１０４】
ＸＭＬボタン化条件を、アプリケーションを介してユーザに指定させると、構造管理機能２２は、このＸＭＬボタン化条件をＸＭＬデータ構造定義テーブルのボタン情報部に保存する。表５は、入力ＸＭＬ「営業成績.xml」のデータに対して指定したＸＭＬデータ構造定義テーブルのボタン情報部の例（ＸＭＬ形式で保存したもの）である。
【０１０５】
【表５】
2008217408.tif 000007
【０１０６】
表５に示す「ボタン情報部」要素の子として、まず「データ単位」要素が現れる。この要素の属性「id」にスキーマ定義部の「element」及び「complexType」の各要素が持つ「id」属性の値を指定することにより、当該構造をデータ単位とすることを定義する。ここでは、“ct5” を指定しているので、図１５（ｆ）に示す［構造３］をデータ単位として定義したことになる。
【０１０７】
「データ単位」要素は、子要素「除外インスタンスリスト」を持ち、これは除外インスタンス条件の指定を複数まとめる役割を果たす。この要素の子として、除外インスタンスの定義を表す「除外インスタンス」要素が０個以上配置される。除外インスタンス条件は、「除外インスタンス」要素が持つ「Xpath」属性に指定する。この例では、除外インスタンス条件として“//組織階層１/社員リスト/社員”を指定している。
【０１０８】
「ボタン情報部」要素の子として、「データ単位」の次に「抽出対象リスト」要素が現れるが、これは抽出対象の指定を複数まとめる役割を果たす。この要素の子として、抽出対象の定義を表す「抽出対象」要素が１個以上配置される。「抽出対象」要素は、この例では、「type」、「id」及び「fieldName」の３個の属性を持つ。「type」属性には、当該抽出対象がボタン化対象か参照対象かを指定する。ボタン化対象の場合は“ボタン”を、参照対象の場合は“参照”を指定する。「id」属性には、スキーマ定義部のＸＭＬ表現で現れる構造のうち、当該抽出対象を表す要素または属性を指定するが、その際、スキーマ定義部のＸＭＬ表現において対応する要素または属性の「id」属性によって行う。「fieldName」属性には、当該抽出対象をボタン生成用ソースデータテーブルに出力する際のフィールド名を指定する。ここでは、１個目の「抽出対象」要素で「type」属性が“ボタン”、「id」属性が“at2”、「fieldName」属性が“所属”となっているので、ボタン化対象として、図１５（ｄ）に示す「構造５」の「名前」属性が選択され、ボタン生成用ソースデータテーブルに出力する際のフィールド名として「所属」であることが指定されたことになる。他の「抽出対象」要素についても同様であり、ボタン化対象として４個、参照対象として１個の抽出対象が定義されている。
【０１０９】
以上のように、ユーザはアプリケーションを介して構造管理機能２２によって、ＸＭＬデータ構造定義テーブルの生成を行うことができる。
【０１１０】
３．ボタン生成用ソースデータ生成機能
図６に示すように、ボタン生成用ソースデータ生成機能２４は、入力ＸＭＬ３２とそれに対応するＸＭＬデータ構造定義テーブル４０を受け取ると、ボタン生成用ソースデータテーブルの生成を開始する。以下、ユーザによって、アプリケーション３０を介し、入力ＸＭＬ３２として「営業成績.xml」が、それに対応するＸＭＬデータ構造定義テーブル４０として「営業成績.xdst」が渡されたとする。ボタン生成用ソースデータ生成機能２４は、ＸＭＬデータ構造定義テーブルのボタン情報部で定義されているデータ単位に該当する要素を、ＸＭＬパース機能２０を使って入力ＸＭＬから全て取り出し、前記要素を対象インスタンス候補とする。
【０１１１】
この例において、「営業成績.xdst」のボタン情報部では、表５に示すように、“ct5”、すなわち図１５（ｆ）に示す［構造３］
をデータ単位として指定しているので、「営業成績.xml」で前記指定された構造を持つ、以下のXPathで示される要素を取り出す。
//組織階層２/社員リスト/社員［名前＝'中村 里沙'］
//組織階層２/社員リスト/社員［名前＝'山本 弘'］
//組織階層２/社員リスト/社員［名前＝'中田 隆史'］
//組織階層１/社員リスト/社員［名前＝'高橋 雅人'］
//組織階層１/社員リスト/社員［名前＝'横山 美雪'］
これら５個の要素がデータ単位の対象インスタンス候補となる。
【０１１２】
次にボタン生成用ソースデータ生成機能２４は、ボタン情報部の除外インスタンスで指定されたものを対象インスタンス候補から除き、残ったものを対象インスタンスとして決定する。この例では、「営業成績.xdst」の「除外インスタンスリスト」の子である「除外インスタンス」要素における「Xpath」属性値“//組織階層１/社員リスト/社員”に当てはまる要素を、「営業成績.xml」から取り出された５個の対象インスタンス候補から除く。５個の対象インスタンス候補のうち、除外インスタンス条件であるXPathに当てはまるのは、以下の要素である。
//組織階層１/社員リスト/社員［名前＝'高橋 雅人'］
//組織階層１/社員リスト/社員［名前＝'横山 美雪'］
【０１１３】
これら２個の要素がデータ単位の対象インスタンス候補から除かれ、最終的に以下の３個の要素が対象インスタンスとなる。
//組織階層２/社員リスト/社員［名前＝'中村 里沙'］
//組織階層２/社員リスト/社員［名前＝'山本 弘'］
//組織階層２/社員リスト/社員［名前＝'中田 隆史'］
【０１１４】
対象インスタンスが決定すると、ボタン生成用ソースデータ生成機能２４は、これらの対象インスタンスを基に、ボタン生成用ソースデータテーブルの生成を行う。ボタン生成用ソースデータテーブルは、フィールドから構成されるデータレコードの集合を記憶したものである。
【０１１５】
ＸＭＬデータ構造定義テーブルのボタン情報部で、「抽出対象リスト」要素下で定義された「抽出対象」要素１個が、ボタン生成用ソースデータテーブルのフィールド１個に対応し、前記フィールドの名称は、対応する前記「抽出対象」要素の属性「fieldName」の値となる。また、「抽出対象リスト」要素下に現れる「抽出対象」要素の順が、そのままボタン生成用ソースデータテーブルに出力されるフィールドの順となる。更に、抽出対象のうち、参照対象に対応するフィールドには、出力時に目印が付けられてボタン生成機能がボタン化対象とは区別できるようになっている。ボタン生成用ソースデータテーブルにおいて、ボタン化対象に対応するフィールドを「ボタン化フィールド」と呼び、参照対象に対応するフィールドを「参照フィールド」と呼ぶ。
【０１１６】
具体的には、「営業成績.xdst」において「抽出対象リスト」要素の最初の子要素「抽出対象」は、「fieldName」属性の値に“所属”が指定されているので、当該抽出対象に対応するボタン生成用ソースデータテーブルのフィールド名称は“所属”となる。同様に、続いて４個の「抽出対象」要素が現れていて、ボタン生成用ソースデータテーブルのフィールド名称は、「社員名」、「地域」、「実績月」及び「金額」となって、表６に示す１行目のようにフィールドが決定される。
【０１１７】
【表６】
2008217408.tif 000008
【０１１８】
表６において、最後に現れる「抽出対象」は参照対象なので、ボタン化対象と区別できるように、対応する「金額」フィールド名称の先頭に「*」が付加されている。すなわち、表６に示すように出力されるボタン生成用ソースデータテーブルのフィールドのうち、「所属」、「社員名」、「地域」及び「実績月」はボタン化フィールドであり、「金額」は参照フィールドである。
【０１１９】
ボタン生成用ソースデータテーブルのフィールドが出力されると、次にボタン生成用ソースデータ生成機能は、ボタン生成用ソースデータテーブルの実データであるレコードを生成するが、それに先立ち、入力ＸＭＬにおける各抽出対象同士の関係を前記テーブルのレコードに反映させるため、抽出対象の上下関係を、各抽出対象に対応するスキーマ定義部の構造を基に決定する。
【０１２０】
図１１に示す、正規化されていない要素構造ツリーにおいて、スキーマ定義部の自動生成時は、属性をノードと見なさなかったが、ここでは属性を該属性が現れる要素ノードの子ノードと見なして、ルートノードから、各抽出対象に対応するノードまでの距離を測定する。距離は、図１１において、ルートノードから当該抽出対象に対応するノードに至るまでいくつの矢印（実線矢印及び破線矢印）を経るかによって決定される。出現場所が不特定の抽出対象の場合、最も長い距離のものを採用する。具体的には、ボタン情報部における１個目の抽出対象“at2”は、図１１に示す要素構造ツリーでは、「組織階層２」要素の「名前」属性のノードとして表現されているが、ルートノードから矢印３個（実線矢印２個と破線矢印１個）を経るので、距離が３となる。また、２個目の抽出対象“el7”は、「//組織階層１/社員リスト/社員」の子ノード（距離５）と「//組織階層２/社員リスト/社員」の子ノード（距離４）の２つで出現するが、距離が長い方を採用するので、距離は５となる。同様に３個目の抽出対象“at3”は距離が７、４個目の抽出対象“el11”は距離が７で、５個目の抽出対象“el12”は距離が７となる。
【０１２１】
前記のようにして、各抽出対象までの距離を測定したら、相対的に距離が短いものを「上位」、距離が長いものを「下位」、同じものを「同位」として、上下関係を決定する。具体的には、図１６に示すように上下関係が決まる。図１６では、左に現れるものを上位、右に現れるものを下位として表現した。図１６に示すように、抽出対象“at2”は、他の抽出対象全てに対して上位である。抽出対象“el7”は、抽出対象“at2”に対して下位であり、抽出対象“at3”、“el11”及び“el12”に対して上位である。抽出対象“at3”、“el11”及び“el12”は、互いに同位であり、抽出対象“at2”と“el7”に対して下位である。
ボタン生成用ソースデータ生成機能は抽出対象の上下関係を決定すると、ボタン生成用ソースデータテーブルのレコード生成を開始する。
【０１２２】
まず、既に決定している対象インスタンスのうち、１個目に現れるものを取り出す。具体的には、「営業成績.xml」で１個目に現れる対象インスタンスは「//組織階層１/組織階層２/社員リスト/社員［名前＝‘中村 里沙’］」のXPathで表される要素である。以降、この要素を「社員「中村
里沙」の対象インスタンス」と呼ぶ。次に、最下位に現れる抽出対象に着目する。最下位に同位で抽出対象が現れた場合は、同位同士を直列に組み合わせて取り出す。直列に取り出す順序は、ボタン情報部で指定されている抽出対象の順序に準ずる。
【０１２３】
この例では、「営業成績.xml」の社員「中村 里沙」の対象インスタンスにおいて、最下位に現れる抽出対象は、図１６で示すように、３個の同位抽出対象である“at3”、“el11”及び“el12”である。同位同士は関係を直列とするので、［“神奈川”,“2006年4月”, “2,500,000”］の組み合わせと、［“埼玉”,“2006年4月”,“5,800,000”］の組み合わせと、［“埼玉”,“2006年5月”,“6,100,000”］の３つの組み合わせが取り出せる。次に、取り出した最下位の抽出対象に対して、入力ＸＭＬにおける関係を保つように、上位の抽出対象を取り出して、抽出対象の組み合わせに直列に加える。
【０１２４】
具体的には、社員「中村 里沙」の対象インスタンスの最下位の３個の抽出対象に対する上位は、図１６に示すように、“at2”と“el7”なので、最下位の抽出対象を取り出した組み合わせに直列に加えて、［“菓子販売部”,“中村 里沙”,“神奈川”,“2006年4月”,“2,500,000”］、［“菓子販売部”,“中村 里沙”,“埼玉”,“2006年4月”,“ 5,800,000”］、及び［“菓子販売部”,“中村 里沙”,“埼玉”,“2006年5月”,“6,100,000”］のようになる。これらの組み合わせ１個を、ボタン生成用ソースデータテーブルのレコード１件に対応させる。すなわち、前述の表６に示すように、社員「中村
里沙」の対象インスタンスから、３件のレコードが生成される。
【０１２５】
入力ＸＭＬが対象インスタンスを複数持つ場合、２個目以降の全ての対象インスタンスに対し、１個目の対象インスタンスの場合と同様の方法で、ボタン生成用ソースデータテーブルのレコードを生成する。具体的には、「営業成績.xml」の社員「山本 弘」の対象インスタンスからは４件のレコードが、社員「中田 隆史」の対象インスタンスからは１件のレコードが生成され、表７に示すようにボタン生成用ソースデータテーブルに記憶される。
【０１２６】
【表７】
2008217408.tif 000009
【０１２７】
以上の方法で、ボタン生成用ソースデータ生成機能によるボタン生成用ソースデータテーブルの生成が完了し、表７に示すボタン生成用ソースデータテーブルを「営業成績.table」として記憶装置に保存する。
【０１２８】
４．ボタン生成機能とボタン機能
図６に示すように、アプリケーション３０は、ボタン生成用ソースデータ生成機能２４によってボタン生成用ソースデータテーブルの生成が完了すると、生成されたボタン生成用ソースデータテーブルをボタン生成機能２４に渡してＸＭＬボタンの生成を要求する。尚、ＸＭＬボタンは、少なくとも「ボタンクラス」と「個別ボタン」を構成要素とする。  以下、ＸＭＬボタンが自動生成される過程及び当該ボタンの操作手順を説明する。
【０１２９】
「ボタンクラス」は、ボタン生成用ソースデータテーブルの各レコードを構成するフィールドの内、ボタン化フィールドに対応し、そのフィールドの名称をボタンクラス名称とする。具体的には、表７に示すボタン生成用ソースデータテーブル「営業成績.table」を基にＸＭＬボタンを生成する際は、４個のボタン化フィールド「所属」、「社員名」、「地域」、及び「実績月」が順番にそれぞれのボタンクラスに対応し、それらのボタンクラス名称はそれぞれ「所属」、「社員名」、「地域」、及び「実績月」となる。表７に示すボタン生成用ソースデータテーブル「営業成績.table」から生成されるＸＭＬボタンのイメージを図１７に示す。図１７では、縦に４個の区画に分かれていて、それぞれがボタンクラスに対応する。ボタンクラスの上部に二重枠で囲まれた文字列があるが、これがボタンクラス名称を表す。
【０１３０】
「個別ボタン」は、ボタンクラスに属し、ボタン生成用ソースデータテーブルの各レコードの当該ボタン化フィールドに出現するユニークなデータ値に対応する。あるボタンクラスに属する個別ボタンは、ボタン生成機能によって次のように決定される。ボタン生成用ソースデータテーブルにおいて、前記ボタンクラスに対応するボタン化フィールドに着目する。着目した前記フィールドに出現するデータのうち、ユニークな値を全て取り出す。取り出した値をキャプションとした個別ボタンを生成し、当該ボタンクラスに関連付けて従属させる。
【０１３１】
具体的には、表７に示すボタン生成用ソースデータテーブル「営業成績.table」からボタン化フィールド「所属」に対応するボタンクラスに属する個別ボタンは、当該フィールドに出現するデータが、順に「菓子販売部」、「菓子販売部」、「菓子販売部」、「健康食品販売部」、「健康食品販売部」、「健康食品販売部」、「健康食品販売部」、及び「健康食品販売部」なので、これらからユニークな値を取り出して、「菓子販売部」と「健康食品販売部」の２個となる。ボタン生成機能は、これらをキャプションとする個別ボタンを２個生成し、「所属」ボタンクラスに関連付けて従属させる。以上により、「所属」ボタンクラスに属する個別ボタン生成が完了する。図１７に示すＸＭＬボタンのイメージでは、一番左のボタンクラスで、ボタンクラス名の下にこれら２個の個別ボタンがそれぞれ一重線で囲まれて文字列として表現している。ボタン生成用ソースデータテーブルを基に、各レコードの全てのボタン化フィールドに対して、同様に当該ボタンクラスに属する個別ボタンを生成できる。
【０１３２】
個別ボタン生成時、各個別ボタンがボタン生成用ソースデータテーブルのどのレコードから生成されたかを後で検索可能とするために、ここでは図示していないが、当該レコード番号を、別途領域を確保して個別ボタンと関連付けて記憶させておくことが好ましい。
【０１３３】
具体的には、表７に示すボタン生成用ソースデータテーブル「営業成績.table」から生成されたボタンクラス「地域」に属する個別ボタン「神奈川」は、表７に示すボタン生成用ソースデータテーブルの上から１番目、４番目及び６番目のレコードから生成されるので、それらのレコード番号を記憶する。同様に、ボタンクラス「実績月」に属する個別ボタン「2006年5月」は、表７に示すボタン生成用ソースデータテーブルの上から３番目、６番目及び７番目のレコードから生成されるので、それらのレコード番号を記憶する。以上の方法で生成されたＸＭＬボタンは、ボタンクラス毎に並べて表示装置に表示される。以上で、ボタン生成機能によるＸＭＬボタン生成が完了する。
【０１３４】
ボタン生成機能によってＸＭＬボタンの生成と表示が完了すると、アプリケーションは表示しているＸＭＬボタンに対するユーザの選択指示を待つ。ユーザが入力装置によって個別ボタンを選択すると、アプリケーションはその選択情報をボタン機能２８に伝える。ボタン機能２８は個別ボタンの選択情報を受け取ると、当該個別ボタンが記憶しているボタン生成用ソースデータテーブル内で当該番号が一致するレコードをマークする。
【０１３５】
具体的には、「営業成績.table」から生成されたＸＭＬボタンにおいて、ボタンクラス「社員名」に属する個別ボタン「山本 弘」が選択された場合、ボタン機能２８は、当該個別ボタンと関連付けて記憶されているレコード番号４、５、６及び７と一致するレコードをマークする。ボタン機能がマークしたレコードは、いつでも取り出すことが可能である。
【０１３６】
すなわち、ユーザは、個別ボタン「山本 弘」を選択することにより、「営業成績.xml」が保持しているデータのうち、「山本 弘」に関するものを特定して取り出すことができる。ボタン選択によってマークされたレコードをどのように活用するかはアプリケーション次第であるが、ここでは言及しない。
【０１３７】
ＸＭＬは、階層化（構造化）されたデータを保持するが、ＸＭＬボタンを生成する際、この階層情報を有効活用することも考えられる。
ＸＭＬデータ構造定義テーブルのボタン情報部の抽出対象を階層化してボタン化することを指定し、ボタン生成用ソースデータテーブルに階層情報を付加して、ＸＭＬボタンを自動生成し、表示装置に階層付きのＸＭＬボタンを表示すれば、これは、階層データを直観的に操作できるアプリケーションのフロントエンドとして便利である。
【０１３８】
例えば「営業成績.xdst」で、フィールド名「所属」に対応する抽出対象とフィールド名「社員名」に対応する抽出対象の階層化ボタン生成を指定したとすると、図１８に示すような階層付きのＸＭＬボタン表示が考えられる。この例のように、「所属 > 社員」という階層化された２個のボタンクラスをまとめて表示すると、階層化されたデータを扱うアプリケーションのフロントエンドとして便利である。
【図面の簡単な説明】
【０１３９】
【図１】本発明を実施するためのコンピュータシステムの構成図である。
【図２】ＸＭＬデータ用ボタンシステムのソフトウェア構成図である。
【図３】ＸＭＬパース機能の概要を示す図である。
【図４】入力ＸＭＬ「営業成績.xml」のツリー構造を示す図である。
【図５】各データの凡例を示す図である。
【図６】本発明の基本シーケンスを示す図である。
【図７】入力ＸＭＬのツリー表現の一部を示す図である。
【図８】ＸＭＬデータテーブルのノード構造及びノードリスト構造を示す図である。
【図９】「営業成績.xml」の文書要素を示す図である。
【図１０】最初に現れる「社員」要素のツリー構造を示す図である。
【図１１】「営業成績.xml」の全てに対して要素構造の連続性判断を行った時の要素構造ツリー（スキーマ）を示す図である。
【図１２】図１１に示す要素構造ツリーに対して、要素間での構造同一性の判断を行った時の要素構造ツリーと要素構造サブツリーを示す図である。
【図１３】図１１に示す要素構造ツリーに対して、要素間での構造同一性の判断を更に行った時の要素構造ツリーと要素構造サブツリーを示す図である。
【図１４】図１１に示す要素構造ツリーに対して、要素間での構造同一性の判断を更に行った時の要素構造ツリーと要素構造サブツリーを示す図である。
【図１５】図１１に示す要素構造ツリーのルートノードまで要素構造サブツリー参照に変換した時の図である。
【図１６】抽出対象の上下関係を示す図である。
【図１７】ＸＭＬボタンの一例を示す図である。
【図１８】ＸＭＬボタンの他の例（階層化ボタン）を示す図である。
【符号の説明】
【０１４０】
１０  中央処理装置
１２  記憶装置
１４  表示装置
１６  入力装置
２０  ＸＭＬパース機能
２２  構造管理機能
２４  ボタン生成用ソースデータ生成機能
２６  ボタン生成機能
２８  ボタン機能
３０  アプリケーション
３２  入力ＸＭＬ
３４  ＸＭＬデータテーブル
４０  ＸＭＬデータ構造定義テーブル
４２  ボタン生成用ソースデータテーブル
【図１】
2008217408.tif 000010
【図２】
2008217408.tif 000011
【図３】
2008217408.tif 000012
【図４】
2008217408.tif 000013
【図５】
2008217408.tif 000014
【図６】
2008217408.tif 000015
【図７】
2008217408.tif 000016
【図８】
2008217408.tif 000017
【図９】
2008217408.tif 000018
【図１０】
2008217408.tif 000019
【図１１】
2008217408.tif 000020
【図１２】
2008217408.tif 000021
【図１３】
2008217408.tif 000022
【図１４】
2008217408.tif 000023
【図１５】
2008217408.tif 000024
【図１６】
2008217408.tif 000025
【図１７】
2008217408.tif 000026
【図１８】
2008217408.tif 000027