JP2008217408A - Xmlデータ用操作ボタンの生成方法 - Google Patents

Xmlデータ用操作ボタンの生成方法 Download PDF

Info

Publication number
JP2008217408A
JP2008217408A JP2007053858A JP2007053858A JP2008217408A JP 2008217408 A JP2008217408 A JP 2008217408A JP 2007053858 A JP2007053858 A JP 2007053858A JP 2007053858 A JP2007053858 A JP 2007053858A JP 2008217408 A JP2008217408 A JP 2008217408A
Authority
JP
Japan
Prior art keywords
xml
button
data
xml data
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007053858A
Other languages
English (en)
Other versions
JP4593580B2 (ja
Inventor
Hidehiro Arita
秀博 有田
Tomoaki Murakami
智章 村上
Tetsuro Ushio
哲朗 牛尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NJK Corp
Original Assignee
NJK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NJK Corp filed Critical NJK Corp
Priority to JP2007053858A priority Critical patent/JP4593580B2/ja
Publication of JP2008217408A publication Critical patent/JP2008217408A/ja
Application granted granted Critical
Publication of JP4593580B2 publication Critical patent/JP4593580B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Digital Computer Display Output (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】ユーザがXML形式のデータを容易に検索し分析して活用できるようにした操作ボタンを、XMLデータから直接自動生成することができるようにする。
【解決手段】記憶装置に記憶されているXMLデータを基に、XMLデータテーブルを自動生成して記憶装置に記憶し、XMLデータを解析して自動生成したスキーマ定義とXMLデータから抽出したい値をボタン化対象及び参照対象に分類した抽出対象とから構成されるボタン情報とをまとめてXMLデータ構造定義テーブルとして記憶装置に記憶し、XMLデータからボタン情報に該当するデータを抽出し抽出対象に対応したフィールドとデータ単位に対応したレコードから成るボタン生成用ソースデータテーブルを自動生成して記憶装置に記憶し、フィールドに対応したボタンクラスと該フィールドに現れるユニークな値を個別ボタンとしたXMLボタンを自動生成して表示装置に表示する。
【選択図】図6

Description

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

Claims (3)

  1. 記憶装置に記憶されているXMLデータを基に、中央処理装置を使用して、
    (1)XMLデータを構成する要素間の関連、要素と属性間の関連、及び要素と属性の持つ値からXMLデータテーブルを自動生成して記憶装置に記憶し、
    (2)前記XMLデータテーブルを参照しながら前記XMLデータの構造を解析してスキーマ言語で表したスキーマ定義を自動生成し、前記XMLデータを構成する要素の内のXMLボタン生成対象の基準要素となるデータ単位と該データ単位のXMLデータ構造上の子孫及び祖先の要素の値または要素の属性の値の内で前記XMLデータから抽出したい値をボタン化対象及び参照対象に分類した抽出対象とから構成されるボタン情報を形成し、前記スキーマ定義と前記ボタン情報をまとめてXMLデータ構造定義テーブルとして記憶装置に記憶し、
    (3)前記XMLデータ構造定義テーブルを参照して、前記XMLデータから前記スキーマ定義と関連付けて前記ボタン情報に該当するデータを抽出し、前記抽出対象に対応したフィールドと前記データ単位に対応したレコードから成るボタン生成用ソースデータテーブルを自動生成して記憶装置に記憶し、
    (4)前記ボタン生成用ソースデータテーブルを基に前記フィールドに対応したボタンクラスを生成し、各フィールドに現れるユニークな値を個別ボタンとして当該フィールドに対応するボタンクラスに関連付けて、前記ボタンクラスと前記個別ボタンから構成されるXMLボタンを自動生成して表示装置に表示する、
    ことを特徴とするXMLデータ用操作ボタン生成方法。
  2. 前記ボタン情報は、前記データ単位の内、XMLデータから除外する除外インスタンスを有することを特徴とする請求項1記載のXMLデータ用操作ボタン生成方法。
  3. 前記表示装置に表示されたXMLボタンは、ユーザが選択した個別ボタンに対応するデータを前記ボタン生成用ソースデータテーブルから取り出すのに使用されることを特徴とする請求項1または2記載のXMLデータ用操作ボタン生成方法。
JP2007053858A 2007-03-05 2007-03-05 Xmlデータ用操作ボタンの生成方法 Expired - Fee Related JP4593580B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007053858A JP4593580B2 (ja) 2007-03-05 2007-03-05 Xmlデータ用操作ボタンの生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007053858A JP4593580B2 (ja) 2007-03-05 2007-03-05 Xmlデータ用操作ボタンの生成方法

Publications (2)

Publication Number Publication Date
JP2008217408A true JP2008217408A (ja) 2008-09-18
JP4593580B2 JP4593580B2 (ja) 2010-12-08

Family

ID=39837373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007053858A Expired - Fee Related JP4593580B2 (ja) 2007-03-05 2007-03-05 Xmlデータ用操作ボタンの生成方法

Country Status (1)

Country Link
JP (1) JP4593580B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014412A (ja) * 2010-06-30 2012-01-19 Yahoo Japan Corp データ抽出装置及び方法
JP2012022371A (ja) * 2010-07-12 2012-02-02 Fujitsu Ltd データベース制御方法、情報処理装置及びデータベース制御プログラム
JP2015508529A (ja) * 2011-12-23 2015-03-19 アミアト・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
JP2019086849A (ja) * 2017-11-01 2019-06-06 株式会社エヌ・ティ・ティ・データ データベース支援装置、データベース支援方法、及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0876954A (ja) * 1994-08-31 1996-03-22 N J K:Kk コンピュータ処理用操作ボタンの生成方法及びこの操作ボタンの選択状態記憶方法
JP2001290811A (ja) * 2000-04-10 2001-10-19 Just Syst Corp 文書処理装置、文書処理方法、および記録媒体
JP2002073614A (ja) * 2000-08-24 2002-03-12 Nec Nexsolutions Ltd 予約関連情報提供システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0876954A (ja) * 1994-08-31 1996-03-22 N J K:Kk コンピュータ処理用操作ボタンの生成方法及びこの操作ボタンの選択状態記憶方法
JP2001290811A (ja) * 2000-04-10 2001-10-19 Just Syst Corp 文書処理装置、文書処理方法、および記録媒体
JP2002073614A (ja) * 2000-08-24 2002-03-12 Nec Nexsolutions Ltd 予約関連情報提供システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014412A (ja) * 2010-06-30 2012-01-19 Yahoo Japan Corp データ抽出装置及び方法
JP2012022371A (ja) * 2010-07-12 2012-02-02 Fujitsu Ltd データベース制御方法、情報処理装置及びデータベース制御プログラム
JP2015508529A (ja) * 2011-12-23 2015-03-19 アミアト・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
JP2017157229A (ja) * 2011-12-23 2017-09-07 アマゾン・テクノロジーズ・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
JP2019086849A (ja) * 2017-11-01 2019-06-06 株式会社エヌ・ティ・ティ・データ データベース支援装置、データベース支援方法、及びプログラム

Also Published As

Publication number Publication date
JP4593580B2 (ja) 2010-12-08

Similar Documents

Publication Publication Date Title
USRE48030E1 (en) Computer-implemented system and method for tagged and rectangular data processing
US7096226B2 (en) Database system, particularly for multimedia objects
US7080067B2 (en) Apparatus, method, and program for retrieving structured documents
JP4822889B2 (ja) データベース統合参照プログラム、データベース統合参照方法及びデータベース統合参照装置
US20030037076A1 (en) Method, computer program and system for style sheet generation
US7363581B2 (en) Presentation generator
US8990717B2 (en) Context-aware charting
JP2003067402A (ja) 構造化文書管理装置及び構造化文書管理方法
KR20080027251A (ko) 데이터베이스로부터 xml 문서를 동적으로 생성하는 방법
JP2007226452A (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
KR20170098854A (ko) 보고 생성 방법
JP4593580B2 (ja) Xmlデータ用操作ボタンの生成方法
KR100899616B1 (ko) 관계형 데이터베이스를 이용한 메타데이터 관리 방법 및시스템
JP4373470B2 (ja) 文書変換活用システム
JPH07239850A (ja) 構造化文書作成支援システム
KR20090032298A (ko) 객체 지향적 프로그램을 이용하여 보고서가 작성되도록하는 방법 및 시스템
JP5458480B2 (ja) タグ付き文書データ問い合わせ処理システムに対する問い合わせ画面生成装置
JP2006031377A (ja) 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
JP2009157860A (ja) 情報編集装置、情報編集方法、およびプログラム
JP2007293874A (ja) 文書の圧縮格納方法及び装置
JP3842576B2 (ja) 構造化文書編集方法及び構造化文書編集システム
JP6638053B1 (ja) ドキュメント作成支援システム
JP2008217170A (ja) 情報処理装置およびプログラム
JP2003323427A (ja) Xml情報検索装置と方法、該方法の実行プログラム、および該方法の実行プログラムを記録した記録媒体
Koch et al. Representation of CityGML instance models in BaseX

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100824

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100915

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160924

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees