JP4758080B2 - 階層構造のメッセージを検証するためのシステムおよび方法 - Google Patents

階層構造のメッセージを検証するためのシステムおよび方法 Download PDF

Info

Publication number
JP4758080B2
JP4758080B2 JP2004210519A JP2004210519A JP4758080B2 JP 4758080 B2 JP4758080 B2 JP 4758080B2 JP 2004210519 A JP2004210519 A JP 2004210519A JP 2004210519 A JP2004210519 A JP 2004210519A JP 4758080 B2 JP4758080 B2 JP 4758080B2
Authority
JP
Japan
Prior art keywords
proxy
verification
tree
message
validation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004210519A
Other languages
English (en)
Other versions
JP2005063416A (ja
Inventor
ロバート パッチ レイモンド
ヤナークアイラマン マスルブーサム
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005063416A publication Critical patent/JP2005063416A/ja
Application granted granted Critical
Publication of JP4758080B2 publication Critical patent/JP4758080B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/226Validation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、一般に、コンピューティングの分野に関し、より具体的には、メッセージ検証のためのシステムおよび方法に関する。
情報は、一般に、有効な内容と無効な内容の両方を表現することを可能にするだけ十分に豊富な語彙または言語で表される。例えば、ローマ字を使用して正しい英語の文を書くことが可能であるが、いずれの言語の意味規則または構文規則にも従わない英語の語をつなぎ合わせること、または完全に理解できない形で英字をつなぎ合わせることも可能である。コンピュータデータが表現される言語も例外ではない。すなわち、何らかの規則群に従って無効であるコンピュータデータを書くことが可能である。
コンピュータシステムでは、多くのデータが、拡張マークアップ言語(XML)メッセージの形態のように階層的な形で表現される。XMLメッセージは、何らかのクラスのメッセージの適切な構文を基本的に定義する何らかのスキーマに適合する。例えば、メッセージのタイプが、「アドレス」である場合があり、アドレスに関するスキーマにより、アドレスが、通りの名前、都市、州、および郵便番号を含むことが要求される場合がある。しかし、スキーマに従うメッセージでさえ、何らかの実質的な理由で無効である可能性がある。例えば、通りの名前、都市、州、および郵便番号であるとされる任意のデータの組合せが、スキーマを満足させるが、例えば、州の要素が米国の州の1つの名前ではない場合、または指定された郵便番号が、都市/州の組合せに合致しない場合、そのアドレスは、やはり無効になり得る。
検証を行う従来のやり方は、力任せの(brute force)メッセージ特有のコードを介してである。各メッセージクラスに関する検証手続きは、個別に書かれ、クラスコード自体を変更せずに手続きの動作を変更する手段がない。この技術の抱える問題は、検証に関する実質的な要件に対する任意の変更がソースコードに対する変更を要することである。ソースコードに対するそのような変更は、面倒なだけでなく、一部のケースでは、ソースコードを公衆に配布して、検証手続きの消費者が手続きに対するカスタム変更を行うことができるようにすることも要求される可能性がある。ソースコードのそのような配布は、望ましくない場合がある。
以上に鑑みて、従来の技術の欠点を克服するシステムの必要性が存在する。
本発明は、メッセージを検証するための機構を提供する。検証エンジンは、メッセージをウォークスルーする(walk through)。例えば、ツリーデータ構造と見なすことができるXMLメッセージの場合、検証エンジンは、深度優先走査順にツリーのノード群をウォークスルーする。
各ノードが見つかった時点で、そのノードを検証する「代理(delegate)」を指定するテーブルが調べられる。代理は、検証エンジンが呼び出すことができる名前付きコードユニットである。検証エンジンは、見つかったノードのタイプに対応する代理を呼び出す。次に、検証エンジンは、現在のノードのサブツリー群を走査する。それらのサブツリー群を走査する際、前述した仕方でテーブルが調べられ、代理が呼び出されることが可能である。サブツリーを走査した後、検証エンジンは、テーブルを再び調べ、現在のノードに対するポストハンドラ(post−handler)代理が存在するか否かを判定する。そのようなポストハンドラが指定されている場合、そのポストハンドラは呼び出される。代理は、何らかの定義済みの検証標準(例えば、組合せが米国における現実のアドレスと実際に一致することを判定することにより、都市、州、および郵便番号の組合せを検証する代理)の下でノードを評価する。
好ましくは、グローバルテーブルとローカルテーブルの両方が存在する。ローカルテーブルは、まず調べられ、現在のノードに対する代理が存在するか否かが判定される。そのような代理が存在する場合、その代理は呼び出される。ローカルテーブルの中でそのような代理が指名されていない場合は、グローバルテーブルを調べて、グローバルテーブルの中で代理が指名されているか否かが判定される。グローバルテーブルの中でそのような代理が指名されている場合、グローバルテーブルからその代理は呼び出される。グローバルテーブルは、広範なカテゴリのメッセージクラスに適用される代理を含むことが可能であり、一方、ローカルテーブルは、特定のメッセージクラスに特有の代理を含むことが可能である。
好ましくは、テーブルは、代理がオプションとして「排他的」と指定されることを可能にする。代理が排他的である場合、ノード、ならびにノードのサブツリー群を検証することを排他的に制御し、したがって、そのサブツリー群は、検証エンジンによって走査されず、そのサブツリー群におけるノード群に関連する代理は、検証エンジンによって適用されない。そうではなく、代理が排他的でない場合、サブツリー群は走査され、サブツリー群におけるノード群に対応する代理は、検証エンジンによって適用される。
本発明のその他の特徴を以下に説明する。
以上の概要、ならびに好ましい実施形態の以下の詳細な説明は、添付の図面と併せて読むことでよりよく理解される。本発明を例示するため、図面では、本発明の構成例を示しているが、本発明は、開示する特定の方法および手段に限定されない。
(概要)
コンピュータによって使用されるデータ、例えば、何らかのスキーマに準拠するXMLデータは、通常、階層構造にされる。データは、構文としてスキーマに準拠している場合でも、依然、何らかの実質的な規則群の下で無効になり得る。従来、データの集合(メッセージなどの)の実質的な検証を実行することは、特定のクラスのメッセージを検証するように設計された専用コードを要する。本発明は、任意のクラスのメッセージを検証するのに使用することができ、任意の規則群をメッセージに適用するように拡張することができる汎用ツールを提供する。本発明の機構を用いて、検証パラメータおよびデータをXML形態で表現することができるあらゆる任意のデータまたはメッセージを検証することができる。
(例示的なコンピューティング環境)
図1は、本発明の態様を実施することができる例示的なコンピューティング環境を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲について何ら限定を示唆するものではない。また、コンピューティング環境100が、例示的な動作環境100に示したコンポーネントのいずれか1つ、またはいずれかの組合せに関連する依存関係または要件を有すると解釈してはならない。
本発明は、他の多数の汎用または専用のコンピュータシステム環境またはコンピュータシステム構成で機能する。本発明で使用するのに適している可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、以上のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれるが、以上には限定されない。
本発明は、コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。また、本発明は、通信ネットワークまたはその他のデータ伝送媒体を介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、プログラムモジュールおよびその他のデータは、メモリ記憶装置を含むローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体との両方の中に配置することができる。
図1を参照すると、本発明を実施するための例示的なシステムが、コンピュータ110の形態で汎用コンピューティング装置を含んでいる。コンピュータ110のコンポーネントには、限定ではないが、処理装置120、システムメモリ130、およびシステムメモリから処理装置120までを含む様々なシステムコンポーネントを結合するシステムバス121が含まれることが可能である。処理装置120は、マルチスレッドプロセッサ上でサポートされるような複数の論理処理装置を表すことが可能である。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであってもよい。例として、限定としてではなく、そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および(メザニン(Mezzanine)バスとしても知られる)PCI(Peripheral Component Interconnects)バスが含まれる。システムバス121は、通信装置の間におけるポイントツーポイント接続、スイッチングファブリック、または以上に類するものとして実装してもよい。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の利用可能な媒体であることが可能であり、揮発性媒体および不揮発性媒体と、リムーバブルな媒体および固定の媒体とがともに含まれる。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体および不揮発性媒体と、リムーバブルな媒体および固定の媒体とがともに含まれる。コンピュータ記憶媒体には、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータ110がアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するような仕方で特性の1つまたは複数が設定または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、RF媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、前述した媒体のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれるべきものである。
システムメモリ130は、読み取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132などの揮発性メモリおよび/または不揮発性メモリの形態でコンピュータ記憶媒体を含む。始動中などにコンピュータ110内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム133(BIOS)が、通常、ROM131の中に格納されている。RAM132は、通常、処理装置120が即時にアクセスすることができ、かつ/または処理装置120によって現在、処理されているデータおよび/またはプログラムモジュールを含む。例として、限定としてではなく、図1は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、その他のリムーバブルな/固定の、揮発性/不揮発性のコンピュータ記憶媒体も含むことが可能である。単に例として、図1は、固定の不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ141、リムーバブルな不揮発性の磁気ディスク152に対して読み取りまたは書き込みを行う磁気ディスクドライブ151、およびCD−ROMまたはその他の光媒体などのリムーバブルな不揮発性の光ディスク156に対して読み取りまたは書き込みを行う光ディスクドライブ155を示している。例示的な動作環境において使用することができるその他のリムーバブルな/固定の、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれるが、以上には限定されない。ハードディスクドライブ141は、通常、インターフェース140のような固定のメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150のようなリムーバブルなメモリインターフェースでシステムバス121に接続される。
前述し、図1に示したドライブ、および関連するコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージがコンピュータ110に提供される。図1で、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶していることが示されている。以上のコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147に、ここでは、少なくともそれらが異なるコピーであることを示すために異なる符号を付けている。ユーザは、キーボード162、ならびにマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティング装置161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。その他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。以上の入力装置、およびその他の入力装置は、しばしば、システムバスに結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造で接続してもよい。また、モニタ191、または他のタイプのディスプレイ装置も、ビデオインターフェース190のようなインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース195を介して接続することができるスピーカ197やプリンタ196などの他の周辺出力装置も含むことが可能である。
コンピュータ110は、リモートコンピュータ180のような1つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することが可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ110に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置181だけを図1に示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、その他のネットワークを含むことも可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインターフェースまたはネットワークアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、インターネットなどのWAN173を介して通信を確立するためのモデム172、またはその他の手段を含む。内部にあることも、外部にあることも可能なモデム172は、ユーザ入力インターフェース160、またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関連して示したプログラムモジュール、またはプログラムモジュールの諸部分は、リモートメモリ記憶装置の中に格納することができる。例として、限定としてではなく、図1は、リモートアプリケーションプログラム185が、メモリ装置181上に常駐していることを示している。図示したネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段も使用できることが認められよう。
(例示的なXMLデータ)
本発明を使用して、拡張マークアップ言語(XML)の形態のデータのように階層構造になったデータの集合または「メッセージ」を検証することができる。XMLは、定義済みの構造またはスキーマに従ってデータを構成することができるようにするメタ言語である。図2は、XMLデータの例を示しており、示した構成は、郵便アドレスを表すのに役立つ可能性がある。
XMLでは、データ項目が、要素名または「タグ」名に関連付けられる。タグは、区切られたデータの先頭が山括弧「<」と「>」の中に囲まれたタグ名によってマークを付けられ、区切られたデータの終りが、スラッシュ(slash)が前に付き、山括弧で囲まれたタグ名によってマークを付けられるという構文規則(syntactic convention)を用いて、区切り記号として使用することができる。以下は、その規則に従うXMLデータの例である。
<A>
タグ「A」で区切られたデータ
</A>
図2では、メッセージ200がアドレスである。区切り記号<ADDRESS>(202)と</ADDRESS>(222)が、メッセージ全体を囲み、データのすべてが「ADDRESS」要素の一部であることを示している。ADDRESS要素は、次の2つの下位要素を含む。すなわち、STREET要素およびCITYSTATEZIP要素である。STREET要素は、「メインストリート123番地」(204)に設定される。CITYSTATEZIP要素は、他の要素を含む複合要素であり、それらの含まれる要素が、区切り記号206と220で囲まれている。CITYSTATEZIP要素は、「レッドモンド市」に設定されたCITY要素(208)、「ワシントン州」に設定されたSTATE要素(210)、およびZIP要素を含み、ZIP要素は、含まれる要素に区切り記号212と218によってマークを付けられている複合体である。ZIP要素は、「98052」に設定された要素FIVEDIGIT(214)、および「0123」に設定された要素PLUSFOUR(216)を含む。したがって、メッセージ200は、アドレスをデータの階層的集合として記述している。
XMLメッセージは、ツリーデータ構造に対応することが認められよう。図3は、メッセージ200に対応するツリー300を示している。ノード302が、図2の「ADDRESS」タグに対応し、ノード302のサブツリー群のすべてが、区切り記号<ADDRESS>202と</ADDRESS>222(図2に示す)の範囲内に含まれる要素群に対応する。その含まれる要素群が、STREET要素204、ならびにCITYSTATEZIP要素である。前述したとおり、CITYSTATEZIPは、他の要素を含む複合体である。ノード304が、CITYSTATEZIPタグに対応し、ノード304のサブツリー群のすべてが、区切り記号<CITYSTATEZIP>206と</CITYSTATEZIP>220(図2に示す)の範囲内に含まれる要素群に対応する。その含まれる要素群が、CITY要素208、STATE要素210、およびZIP要素である。ZIP要素は、他の要素を含む複合体である。このため、ノード306が、ZIPタグに対応し、ノード306のサブツリー群のすべてが、区切り記号<ZIP>212と</ZIP>218の範囲内に含まれる要素群に対応する。その含まれる要素群が、FIVEDIGIT要素214およびPLUSFOUR要素216である。見て取ることができるとおり、ツリー300は、XMLメッセージ200の構造に対応し、メッセージ200の中に含まれる郵便アドレスの階層構造を示している。
メッセージは、一般に、何らかのタイプの予め定められた構造、つまり「スキーマ」に従う。例えば、「アドレス」メッセージに関するスキーマにより、アドレスに存在することが可能な様々な異なるタイプの構造が定義されることが可能である。例えば、そのようなスキーマにより、アドレスメッセージがADDRESSタグを含むものとして定義されることが可能であり、ADDRESSタグの許される構造の詳細がさらに定義されることが可能である。例えば、スキーマは、ADDRESSタグが、STREET要素と、もう1つの要素を含むことを指定することができ、もう1つの要素は、CITYSTATEZIP(米国のアドレスの場合)またはCITYPROVINCEPOSTCODE(カナダのアドレスの場合)、あるいは米国またはカナダ以外のアドレスの場合、CITYCOUNTRYであることが可能である。要素の各タイプ(例えば、CITYSTATEZIP)に関して、スキーマは、その要素を構成する下位要素の許される構造を定義することができる。ADDRESSタグのこの定義の下で、図2および3に示すメッセージ200、ならびに対応するツリー300は、ADDRESSタグの許される内容の一例、すなわち、米国アドレスの構造に過ぎず、正当なADDRESSは、代替として、前述した他のタイプの要素の1つを含むことも可能であることを理解されたい。
実際、スキーマは、XMLメッセージに関する許される構文を定義する。ただし、何らかのスキーマの下で構文上正しいが、何らかの実質的な規則に違反するXMLメッセージを形成することが可能である。本発明は、以下により詳細に説明するとおり、XMLメッセージの実質(substance)を検証するのに使用することができる機構を提供する。
(ツリー走査)
図3に関連して前述したとおり、XMLメッセージは、ツリーと見なすことができる。本発明の1つの特徴によれば、XMLメッセージによって表されるツリーは、好ましくは、深度優先順(depth−first sequence)に走査される。ツリーにおける各ノードが見つかると、そのノードが、1つまたは複数の検証テーブルによって与えられる情報に従って検証される。ノードを「検証する」とは何を意味するか、ならびに検証テーブル自体の構造を以下により詳細に説明する。ただし、図4を参照すると、ツリーを深度優先順に走査するとは何を意味するかを示す一例が描かれている。
ツリー400は、複数のノードを含む。ツリー400のルートには、「A」というラベルが付けられている。ルートノードの子には、「A1」、「A2」、および「A3」というラベルが付けられている。これらの子のそれぞれは、図に示すとおり、「A11」、「A12」、「A21」、「A22」、「A31」、および「A32」というラベルが付けられた子を有する。
ツリー400が深度優先走査順で走査される場合、ツリーの各ノードは、特定の順序(sequence)で検出される。深度優先順でツリーを走査するアルゴリズムは、再帰的に定義することができる。所与のツリーに関して、
−ツリーのルートノードを最初に訪れ、
−次に、ルートノードのサブツリーが存在する場合、そのサブツリーのそれぞれを左から右の順に深度優先順で訪れる
各サブツリーは、実際、独自のルートノードを有するツリーであるため(例えば、A1は、Aのサブツリー群の1つのサブツリーのルートノードである)、サブツリーを深度優先順に走査するアルゴリズムは、最上レベルのツリーを深度優先順に走査するアルゴリズムと同一である。したがって、当業者に理解されるとおり、この走査アルゴリズムは、再帰関数として実装することができる。
それゆえ、ツリー400が、この再帰アルゴリズムを使用して走査される場合、検出される最初のノードは、ルートノード「A」である。次に、ルートノード「A」の左端のサブツリーが、深度優先順で走査される。各サブツリーは、それ自体、ツリーであるため、そのサブツリー群のそれぞれが、ルートノードを有する。Aの左端のサブツリーのルートノードには、「A1」というラベルが付けられている。それゆえ、ノードAを訪れた後、ツリー走査アルゴリズムは、A1をルートとするサブツリーに適用され、このサブツリーにおいて訪れられる最初のノードが、A1である。A1もサブツリー群を有し、そのサブツリー群が、左から右の順に訪れられる。それゆえ、A1が訪れられた後、ルートがA11であるサブツリーが、深度優先順に走査される。A11は、子をまったく有さないので、走査されるべきA11のサブツリーはまったく存在せず、したがって、A11の右側の次のサブツリー(すなわち、A12をルートとするツリー)が、深度優先順に走査される。A12も、子をまったく有さないので、やはり、走査されるべきサブツリーはまったく存在しない。それゆえ、A1、およびA1のサブツリーの走査は完了し、アルゴリズムは、ノードAの次のサブツリー(すなわち、A2をルートとするサブツリー)を走査することに移り、A1をルートとするサブツリーを走査したのと同一のやり方で、このサブツリーを走査することにとりかかる。
前述した再帰アルゴリズムを使用してツリーが走査された場合、結果は、図4に示した順序で、すなわち、A、A1、A11、A12、A2、A21、A22、A3、A31、A32の順序で、ツリー400におけるノード群のすべてを訪れることになる。
(検証テーブル例)
前述したとおり、XMLメッセージは、スキーマの中で指定された構造または構文に準拠するが、それでもメッセージの実体の中に無効なデータを含む可能性がある。例えば、図2および3に関連して前述したとおり、メッセージは、都市=「レッドモンド」、州=「ワシントン州」、および郵便番号=「98052」を指定することが可能なアドレスを含むことが可能である。この情報は、構文上、有効であり(すなわち、都市、州、および郵便番号が、米国内のアドレスに関する正しい構文であることを含め)、実質的にも有効である(すなわち、98052は、実際、ワシントン州レッドモンド市の正しい郵便番号である)。ただし、アドレスが実質的に有効であるかどうかをアドレスの構文から判定する方法は存在しないことに留意されたい。例えば、「レッドモンド市、ワシントン州、19103」は、構文上有効なアドレスであるが、実質的に有効なアドレスではない。というのは、19103は、ペンシルベニア州フィラデルフィア市の郵便番号であり、ワシントン州レッドモンド市の郵便番号ではないからである。したがって、XMLメッセージがスキーマに準拠することを保証することにより、構文上の有効性だけは保証することができるが、他のタイプの有効性は保証することができない。本発明は、XMLメッセージに対して任意の有効性試験を実行するためのフレームワークを提供する。
図5は、特定のタイプのXMLメッセージに対して実行されるべき検証試験を指定する例示的な検証テーブル500を示している。テーブル500に示した諸要素は、ツリー400の要素タイプ群に対応する(図4に示す)。すなわち、ツリー400は、A、A1、A11などと名前が付けられた要素群を有し、テーブル500も同様である。検証テーブル500は、4つの列502、504、506、および508を含む。テーブル500の所与の行に関して、エントリは、以下の意味を有する。すなわち、
−列502のエントリは、その行が該当する要素の名前であり、
−列504のエントリは、要素に対して指定された代理が、「排他的」であるかどうかを示し(「代理」および「排他的」という用語は、以下により詳細に説明する)、
−列506のエントリは、要素が見つかった際に呼び出される代理(または「ハンドラ」)の名前であり、
−列508のエントリは、要素、ならびにサブツリー群のすべてが処理された後に呼び出される代理である。
したがって、テーブル500の最初の行は、「A」という名前の要素に関して、その要素が見つかった際に「fA」という名前の代理が呼び出され、その要素に関するサブツリー群のすべてが検証された後、「postfA」という名前の代理が呼び出されることを示す。さらに、この行は、この行で指定された代理群が、「排他的」でないこと、すなわち、サブツリー代理群の使用を排除しないことを示す。
「代理」は、特定のタイプの要素に関する検証を実行する名前の付けられたコードである。例えば、図2で説明したCITYSTATEZIP要素に対する代理は、米国の都市、州、および郵便番号のテーブルを含み(または、少なくとも、調べて)、CITYSTATEZIP要素の中で指定された組合せが正しい組合せであるかどうかを判定することができる。本発明は、いずれの特定のタイプの検証試験にも限定されず、本発明を組み込んだシステムの消費者は、独自の代理を書き、要素が有効であるとは何を意味するかを定義することを自由に行えることを理解されたい。詳細には、代理は、その代理が登録されている要素の内容を考慮することに(またはその代理が登録されているサブツリー群の内容考慮することにさえ)限定されず、そのサブツリーの外部の情報も考慮することができることに注目されたい(例えば、CITYSTATEZIP要素に対する代理は、郵便番号+4の値が有効であるかどうかを判定するために番地(street address)(図2および3に示す要素204)も考慮することができる)。どのような代理が書かれたかに基づいて有効性を任意に定義できることにより、任意のタイプのメッセージを検証する柔軟性が提供される。
一例では、代理は、C#のようなプログラミング言語で書かれる。ただし、本発明によるシステムは、任意の名前が付けられたコードを代理として使用するように構成できることが理解されよう。
代理の名前が、列506と列508の両方に現れている。列506で指名された代理は、ツリー走査において所与の要素が訪れられた際、呼び出される代理である。列508で指名された代理は、要素のサブツリー群のすべてが走査された後に呼び出される。それゆえ、列508で指名された代理は、「ポストハンドラ」である。というのは、この代理は、その要素、ならびにその要素のサブツリー群のすべてが訪れられた後に呼び出されるからである。
列504で指定された「排他」特性は、現在の要素のサブツリー群に対する代理が呼び出されるべきかどうかを指定する。それゆえ、テーブル500で、要素A2が、排他特性を有し、タイプA2の要素が見つかった際、A2のサブツリー群の要素に対する個々の代理は呼び出されない。というのは、A2の代理が、A2、およびA2のサブツリー群のすべてに対する「排他的」制御を有するからである。それゆえ、テーブル500が、要素A21およびA22に対する代理群を示していても、その代理群は呼び出されない。というのは、A2が、「排他」特性を有し、これにより、A2のサブツリー群のいずれのサブツリーにおけるいずれの要素に関しても、代理群が呼び出されることが妨げられるからである。
本発明によるシステムは、XMLメッセージをウォークスルーして(例えば、メッセージが表すツリーの深度優先順走査において)、検証テーブルの中の指定に従って代理群を適用する検証エンジンを含むことが可能である。検証エンジンが、検証エンジンのソースコードにアクセスする必要なしに、検証試験を変更すること、または置き換えることが可能になる、つまり、単に検証テーブルに代理を登録すること、または検証テーブルから代理の登録を抹消することによって検証試験を変更することができることが認められよう。基礎をなす検証エンジンソースコードにアクセスすることなく検証試験を変更できることは、本発明によって提供される柔軟性の一例である。
テーブル1は、検証テーブル500を使用して、検証エンジンによってツリー400(図4に示す)に対して実行される検証試験の一例を示している。左側の列は、検証プロセスにおける様々なイベント(例えば、要素の検出、および要素のサブツリー群の完了)をそれらのイベントが生じる順序で示している。右側の列は、イベントが生じた際にいずれの代理が呼び出されるかを示している。テーブル1で見て取ることができるとおり、要素A21およびA22は、これらに対して登録された代理群を有するものの、A21およびA22は、ノードA2の子であり、ノードA2は、排他フラグが「はい」に設定されて登録されているため、検証エンジンによって呼び出されない。(異なるメッセージにおいて、A21またはA22が、排他的とマークが付けられていない何らかの他のノードの子として現れるとした場合、検証エンジンは、ノードA21またはA22を検出し、それらのノードが検出された時点で、代理fA21またはfA22が呼び出される。)
Figure 0004758080
本発明の1つの特徴によれば、グローバル検証テーブルとローカル検証テーブルの両方が存在することが可能である。本発明のアーキテクチャは、フィールド群、またはフィールド群のグループが、いくつかの異なるクラスのメッセージの間で共通であることが可能であるという可能性を許容する。その共通のフィールド群に関する設定は、グローバル検証テーブルの中に格納することができる。特定のクラスのメッセージだけに適用される任意の設定は、ローカル検証テーブルの中に格納することができる。実際には、ローカル検証テーブルは、グローバル検証テーブルに対する1組のクラス特有のオーバーライド(override)として機能する。また、本発明の一実施形態では、複数のグローバル検証テーブルを作成することができ、何らかのコンテキストに基づいて特定のグローバルテーブルを使用のために選択することができる。
(例示的な検証プロセス)
前述したとおり、本発明による検証エンジンは、XMLメッセージをウォークスルーし、1つまたは複数の検証テーブルに従ってメッセージの中の様々な要素群に対する代理を呼び出す。以下は、検証エンジンによって実行されるプロセスの説明である。
検証エンジンは、XMLメッセージのルート要素(例えば、図2〜3の例におけるADDRESS要素、または図4の例における「A」要素)から開始する。この開始要素が、「現在の」要素となるように設定される。次に、現在の要素(この説明では、「X」と呼ぶことにする)に関して、検証エンジンは、
−ローカル検証テーブル内のXに関する「要素ハンドラ」列で代理を検索する。ローカル検証テーブル内のその列で代理が指定されている場合、エンジンは、その要素ハンドラを呼び出す。
−ローカルテーブルが、「要素ハンドラ」列でXに対する代理を指定していない場合、エンジンは、グローバルテーブルの中でXに対する代理を検索する。Xに対するハンドラが、グローバルテーブル内の「要素ハンドラ」列で指定されている場合、その指定された代理が呼び出される。いずれのテーブルも要素Xに対する代理を指定していない場合、要素Xに対する代理はまったく呼び出されない。
−要素Xの子要素群のそれぞれに関して、前述したステップが繰り返される(Xが、「排他的」として登録されていない限り)。一実施形態では、それらのステップは、要素Xのサブツリー群に対して呼び出すことができる再帰機能で実装される。
−(ローカルテーブルまたはグローバルテーブル内に)Xに対してポストハンドラ代理が存在する場合、Xのすべてのサブツリー群が処理された後にポストハンドラが呼び出される。(Xに対するポストハンドラ代理が両方のテーブルの中で存在する場合、ローカルテーブルの中で指定された代理だけが呼び出される。)
図6は、検証エンジンによって実行されるプロセスを流れ図の形態で示している。最初、「現在のノード」が、ツリーのルートノードとなるように定義される(602)(例えば、XMLメッセージにおけるルート要素)。次に、ローカル検証テーブルが調べられる。現在のノードに関するエントリが、そのノードタイプに対する代理を示すローカル検証テーブルの中に存在する場合(604)、そのローカル検証テーブルからのエントリが使用される(606)。ローカル検証テーブルの中にまったくエントリが存在しない場合、グローバル検証テーブルの中にエントリが存在するかどうかが判定される(607)。グローバル検証テーブルからのエントリが存在する場合、そのエントリが使用される(608)。ローカル検証テーブルまたはグローバル検証テーブルの中で何らかの代理が見つかったものと想定すると、その代理が呼び出される(610)。見つからなかった場合、プロセスは、以下に説明するとおり、614に進む。
現在のノードに関するエントリ(すなわち、いずれのテーブルが実際に使用されたにしても、ローカル検証テーブルまたはグローバル検証テーブルからのエントリ)により、エントリが「排他的」でないことが示される場合(612)、図6のプロセスは、現在のノードの子ノード群のそれぞれに対して再帰的に呼び出される(614)。好ましくは、プロセスは、その子ノード群に対して左から右の順に呼び出される。現在のノードに関するエントリにより、エントリが排他的であることが示される場合、図6のプロセスは、子ノード群に対して呼び出されない。というのは、現在のノードに関するエントリが、現在のノードのすべてのサブツリー群を排他的に制御するからである。
現在のノードに対するポストハンドラ代理が存在する場合(616)、そのポストハンドラが呼び出される(618)。(ポストハンドラは、610で代理が呼び出された後に直接に(現在のノードのエントリが排他的でる場合)、またはサブツリー群の処理の後に(現在のノードのエントリが排他的ではない場合)適用される)。ポストハンドラ代理が適用された後(またはポストハンドラ代理が存在しないと判定された後)、現在のノードが最上レベルツリーのルートであるかどうかが判定される(620)。現在のノードが、最上レベルツリーのルートである場合(例えば、図3のノード302、または図4のノード「A」)、プロセスは終了する。それ以外の場合、プロセスは、呼び出し元に戻る(というのは、現在のノードが最上レベルのルートではない場合、図6のプロセスは、そのプロセスの以前のインスタンスによって再帰的に呼び出されているからである)。
以上の例は、説明のためだけに提示しており、本発明を限定するものとして解釈されるべきではまったくないことに留意されたい。本発明を様々な実施形態に関連して説明してきたが、本明細書で使用してきた言葉は、限定の言葉ではなく、説明および例示の言葉であることを理解されたい。さらに、本発明を本明細書で特定の手段、材料、および実施形態に関連して説明してきたが、本発明は、本明細書で開示した詳細に限定されるべきものではなく、むしろ、本発明は、添付の特許請求の範囲に含まれるようなすべての機能的に等価の構造、方法、および用途に拡張される。本明細書の教示を利用する当業者は、教示に対して多数の変更を行うことができ、本発明の範囲および趣旨を逸脱することなく本発明の態様の変更を行うことができる。
本発明の態様を実施することができるコンピューティング環境例を示すブロック図である。 拡張マークアップ言語(XML)の形態の例示的なメッセージを示すブロック図である。 図2のXMLメッセージのツリー表現を示すブロック図である。 ツリーの深度優先走査を示すツリーのブロック図である。 本発明の態様による例示的な検証テーブルを示すブロック図である。 本発明の態様による例示的な検証プロセスを示す流れ図である。
符号の説明
110 コンピュータ
200 メッセージ
300 ツリー
400 ツリー
500 検証テーブル

Claims (18)

  1. コンピュータにツリーの形態で構成されたメッセージを検証させるためのプログラムが記録されたコンピュータ可読記録媒体であって、前記コンピュータに、
    深度優先走査順に前記メッセージのツリーを走査して、前記メッセージのツリーの第1の要素を検出する動作と、
    第1の検証テーブルを調べて前記第1の要素に対応する第1の代理を特定する動作であって、前記第1の検証テーブルは、前記第1の検証テーブルの中にリストアップされる各要素に関して、所与の要素のサブツリー群が走査されるべきかどうかを示すフラグを含む、動作と、
    前記第1の代理を前記第1の要素に適用する動作と、
    深度優先走査順に前記メッセージのツリーを走査して、前記第1の要素のサブツリーのルートである第2の要素を検出する動作と、
    前記第1の検証テーブルに従って第2の代理を前記第2の要素に適用する動作と、
    深度優先走査順に前記メッセージのツリーを走査して、前記第1の要素でも前記第1の要素の下位ノードからなるサブツリーの要素でもない前記メッセージのツリーの第3の要素を検出する動作と、
    前記第1の代理が前記第1の要素について、または、前記第2の代理が前記第2の要素について、前記第3の要素に基づき少なくとも1つの判定を行う動作と
    前記第1の要素に対応する前記フラグが、前記第1の要素のサブツリー群が走査されるべきであると示すことを判定する動作と
    を実現させるためのプログラムが記録されたことを特徴とするコンピュータ可読記録媒体。
  2. 前記第1の検証テーブルを調べる動作に先立って、第2の検証テーブルが前記第1の要素に対応する代理をまったく含まないと判定する動作をさらに備えたことを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  3. 前記第1の代理を適用する動作は、前記第2の要素を検出する動作に先立って実行され、前記方法は、
    前記第2の代理を適用する動作に続いて、前記第1の検証テーブルを調べて前記第1の要素に対応する第3の代理を特定する動作と、
    前記第3の代理を前記第1の要素に適用する動作と
    をさらに備えたことを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  4. 前記方法は、基準に従って、複数の検証テーブルのなかから前記第1の検証テーブルを選択する動作であって、前記選択される検証テーブルは、適用されるべき代理群を特定するために調べられるテーブルである動作をさらに備えることを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  5. 前記メッセージは、拡張マークアップ言語(XML)の内容を含むことを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  6. 前記第1の代理および前記第2の代理はそれぞれ、解釈可能なコードを含むことを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  7. 前記方法は、前記第1の検証テーブルを含む1つまたは複数の検証テーブルに従った前記メッセージに対する代理群の適用に基づき、前記メッセージが有効であるかどうかを判定する動作をさらに備えたことを特徴とする請求項1に記載のコンピュータ可読記録媒体。
  8. プログラムされたコンピュータによってメッセージを検証する方法であって、前記コンピュータは、
    前記メッセージの特定のタイプの要素を検証するようにそれぞれが適合された1つまたは複数の検証の代理を作成する動作と、
    前記メッセージの各タイプの要素に対して前記検証の代理の少なくとも1つを指定する第1の検証テーブルを作成する動作であって、前記第1の検証テーブルは、前記メッセージの中の各タイプの要素に関して、前記タイプの要素のサブツリー群に対する前記検証の代理群が前記サブツリー群に適用されるべきか否かを示すフラグを指定する、動作と、
    検証エンジンを前記メッセージに適用する動作であって、前記検証エンジンを用いて、前記メッセージの各要素に関して、前記第1の検証テーブルを調べて前記要素に適用されるべき検証の代理を特定し、前記特定された検証の代理を前記要素に適用する動作と
    を実現させるようにプログラムされたことを特徴とする方法
  9. 前記メッセージの各タイプの要素に対して検証の代理を指定する第2の検証テーブルを作成する動作をさらに備え、
    前記検証エンジンは、前記第2の検証テーブルを調べ、所与のタイプの要素に関するエントリが存在する場合、前記第2の検証テーブルによって指定された検証の代理を適用し、存在しない場合、前記第1の検証テーブルによって指定された検証の代理を適用することを特徴とする請求項8に記載の方法。
  10. 前記第1の検証テーブルは、前記メッセージの各タイプの要素に対する第1の検証の代理および第2の検証の代理を指定し、前記検証エンジンは、前記要素が検出された際、前記第1の検証の代理を前記要素に適用し、前記第1の検証の代理、および前記要素のあらゆるサブツリー群に適用可能な検証の代理群が適用された後、前記第2の検証の代理を前記要素に適用することを特徴とする請求項8に記載の方法。
  11. 前記メッセージは、拡張マークアップ言語(XML)の内容を含むことを特徴とする請求項8に記載の方法。
  12. 前記メッセージは、ツリーの形態に構成され、前記メッセージの各要素は、前記ツリーにおけるノードに対応することを特徴とする請求項8に記載の方法。
  13. 前記検証の代理群のそれぞれは、解釈可能なコードを含むことを特徴とする請求項8に記載の方法。
  14. プログラムされたコンピュータによって複数の要素からなるツリーの形態で構成されたメッセージを検証するためのシステムであって、前記コンピュータが、
    前記ツリーにおける要素の名前にそれぞれが対応する複数の代理を示す第1の検証テーブルであって、前記メッセージの中の各タイプの要素に関して、前記タイプの要素のサブツリー群に対する前記検証の代理群が前記サブツリー群に適用されるべきか否かを示すフラグを指定する第1の検証テーブルと、
    前記ツリーを走査し、前記ツリーの前記走査中に検出された要素の1つである第1の要素に関して、前記第1の検証テーブルを調べて、前記検出された要素に適用されるべき前記複数の代理の1つである第1の代理を特定し、前記第1の代理を呼び出すことによって前記特定された第1の代理を適用し、前記ツリーの前記走査中に検出された前記第1の要素が属するサブツリーのルートである第2の要素に関して、前記第1の検証テーブルを調べて第2の代理を特定し、前記第2の代理を呼び出すことによって前記特定された第2の代理を適用する検証エンジンであって、前記第1の代理が前記第1の要素について、または、前記第2の代理が前記第2の要素について、前記第2の要素でも前記第2の要素の下位ノードからなる前記第1の要素が属するサブツリーの要素でもない前記ツリーの前記走査中に検出された第3の要素に基づき少なくとも1つの判定を行う、検証エンジンと
    を実現するようにプログラムされたことを特徴とするシステム
  15. 前記ツリーにおける要素の名前にそれぞれが対応する複数の代理を示す第2の検証テーブルをさらに備え、
    前記検証エンジンは、前記ツリーの前記走査中に検出された各要素に関して、前記第2の検証テーブルを調べて前記検出された要素に関するエントリが存在するかどうかを判定し、前記第2の検証テーブルの中で前記検出された要素に関するエントリが存在する場合、該エントリを使用し、前記第2の検証テーブルが、前記検出された要素に対応するエントリをまったく含まない場合、前記第1の検証テーブルを調べることを特徴とする請求項14に記載のシステム
  16. 前記第1の検証テーブルは、前記ツリーにおける前記要素群の少なくともいくつかに対するポスト処理の代理を特定し、前記ポスト処理の代理は、前記要素に対する代理、および前記要素のサブツリー群に対する代理群が呼び出された後、呼び出されることを特徴とする請求項14に記載のシステム。
  17. 前記メッセージは、拡張マークアップ言語(XML)の内容を含むことを特徴とする請求項14に記載のシステム。
  18. 前記代理群のそれぞれは、解釈可能なコードを含むことを特徴とする請求項14に記載のシステム。
JP2004210519A 2003-08-18 2004-07-16 階層構造のメッセージを検証するためのシステムおよび方法 Expired - Fee Related JP4758080B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/643,031 US7464331B2 (en) 2003-08-18 2003-08-18 System and method for validating hierarchically-organized messages
US10/643,031 2003-08-18

Publications (2)

Publication Number Publication Date
JP2005063416A JP2005063416A (ja) 2005-03-10
JP4758080B2 true JP4758080B2 (ja) 2011-08-24

Family

ID=34136577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004210519A Expired - Fee Related JP4758080B2 (ja) 2003-08-18 2004-07-16 階層構造のメッセージを検証するためのシステムおよび方法

Country Status (5)

Country Link
US (1) US7464331B2 (ja)
EP (1) EP1513073B1 (ja)
JP (1) JP4758080B2 (ja)
KR (1) KR20050020932A (ja)
CN (1) CN100444160C (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378293B2 (en) * 2004-06-03 2016-06-28 Paypal, Inc. Method and apparatus to author and manage pages of a website
US7444345B2 (en) * 2005-02-15 2008-10-28 International Business Machines Corporation Hierarchical inherited XML DOM
US20070074185A1 (en) * 2005-08-30 2007-03-29 Microsoft Corporation Identifier expressions
US7694285B2 (en) * 2005-08-30 2010-04-06 Microsoft Corporation Relaxed and extended delegates
US20080040498A1 (en) * 2006-08-10 2008-02-14 Nokia Corporation System and method of XML based content fragmentation for rich media streaming
WO2010150900A1 (ja) * 2009-06-24 2010-12-29 日本電気株式会社 特徴抽出装置、特徴抽出方法及びプログラム
CN101739462B (zh) * 2009-12-31 2012-11-28 中兴通讯股份有限公司 可扩展标记语言编码方法、解码方法和客户端
US8307277B2 (en) 2010-09-10 2012-11-06 Facebook, Inc. Efficient event delegation in browser scripts
CN111930705B (zh) * 2020-07-07 2023-03-14 中国电子科技集团公司电子科学研究院 二进制消息协议数据处理方法及装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3178151B2 (ja) * 1993-03-19 2001-06-18 富士ゼロックス株式会社 オブジェクト指向言語のメッセージコンパイル装置
TW490643B (en) * 1996-05-21 2002-06-11 Hitachi Ltd Estimated recognition device for input character string
US7117227B2 (en) 1998-03-27 2006-10-03 Call Charles G Methods and apparatus for using the internet domain name system to disseminate product information
US6389414B1 (en) 1998-09-21 2002-05-14 Microsoft Corporation Internal database validation
US6584459B1 (en) 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
US6519617B1 (en) 1999-04-08 2003-02-11 International Business Machines Corporation Automated creation of an XML dialect and dynamic generation of a corresponding DTD
US6584548B1 (en) * 1999-07-22 2003-06-24 International Business Machines Corporation Method and apparatus for invalidating data in a cache
US6535883B1 (en) * 1999-08-04 2003-03-18 Mdsi Software Srl System and method for creating validation rules used to confirm input data
KR100304482B1 (ko) * 1999-09-22 2001-11-02 구자홍 다중 계층구조를 가지는 사용자 선호도 정보구조와 이를 이용한 멀티미디어 정보 서비스 방법
WO2001037170A2 (en) 1999-11-19 2001-05-25 Science Management Corporation Forms creation method and e-commerce method
US6484177B1 (en) 2000-01-13 2002-11-19 International Business Machines Corporation Data management interoperability methods for heterogeneous directory structures
WO2001075549A2 (en) * 2000-03-30 2001-10-11 Cygent, Inc. System and method for establishing electronic business systems for supporting communications services commerce
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US20020035559A1 (en) * 2000-06-26 2002-03-21 Crowe William L. System and method for a decision engine and architecture for providing high-performance data querying operations
JP2002032631A (ja) * 2000-07-18 2002-01-31 Pfu Ltd 商品コンフィグレーション装置、データベース作成装置及びプログラム記録媒体
JP2002215394A (ja) * 2000-08-15 2002-08-02 Fujitsu Ltd Webアプリケーション開発・実行システム及びWebアプリケーション生成装置
US7231606B2 (en) * 2000-10-31 2007-06-12 Software Research, Inc. Method and system for testing websites
DE10055145B4 (de) 2000-11-07 2004-09-23 Deutsche Post Ag Verfahren zum Versehen von Postsendungen mit Frankierungsvermerken
WO2002078286A2 (en) 2001-03-27 2002-10-03 Bea Systems, Inc. System and method for managing objects and resources with access rights embedded in nodes within a hierarchical tree structure
US7058558B2 (en) * 2001-05-25 2006-06-06 The Boeing Company Simulation system and method
US20030088643A1 (en) * 2001-06-04 2003-05-08 Shupps Eric A. Method and computer system for isolating and interrelating components of an application
US6915454B1 (en) * 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US20030125929A1 (en) * 2001-12-10 2003-07-03 Thomas Bergstraesser Services for context-sensitive flagging of information in natural language text and central management of metadata relating that information over a computer network
US6954766B2 (en) * 2001-12-21 2005-10-11 Juniper Networks, Inc. Systems and methods for organizing and validating data in documents
US20030126139A1 (en) * 2001-12-28 2003-07-03 Lee Timothy A. System and method for loading commercial web sites
US20030163778A1 (en) * 2002-02-28 2003-08-28 Michelle Shores System and method for improved validation for claims compliance
US20040030788A1 (en) * 2002-05-15 2004-02-12 Gaetano Cimo Computer message validation system
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7461385B2 (en) * 2003-05-06 2008-12-02 Qad Corporation Method for establishing a new user interface via an intermingled user interface
US7296223B2 (en) * 2003-06-27 2007-11-13 Xerox Corporation System and method for structured document authoring

Also Published As

Publication number Publication date
CN1584885A (zh) 2005-02-23
US20050044093A1 (en) 2005-02-24
US7464331B2 (en) 2008-12-09
CN100444160C (zh) 2008-12-17
EP1513073A3 (en) 2008-01-09
EP1513073A2 (en) 2005-03-09
KR20050020932A (ko) 2005-03-04
JP2005063416A (ja) 2005-03-10
EP1513073B1 (en) 2012-06-13

Similar Documents

Publication Publication Date Title
US7120869B2 (en) Enhanced mechanism for automatically generating a transformation document
US10417430B2 (en) Security remediation
US20120110437A1 (en) Style and layout caching of web content
JP2006523898A (ja) ソースコードの脆弱点の検出法および検出システム
US7363275B2 (en) Access right contradiction detection apparatus and analysis rule creation apparatus
US20050010806A1 (en) Method and system for detecting privilege escalation vulnerabilities in source code
JP2005011345A (ja) コードセグメント作成方法及びそのシステム
JP4758080B2 (ja) 階層構造のメッセージを検証するためのシステムおよび方法
WO2007018827A2 (en) Lightweight application program interface (api) for extensible markup language (xml)
US9311111B2 (en) Programming environment with support for handle and non-handle user-created classes
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
US20080033968A1 (en) Methods and apparatus for input specialization
JP2007514239A (ja) 効果的な省スペースxmlパーシング
CN110377371B (zh) 一种基于Web标签的样式表系统管理方法
Dohrn et al. Fine-grained change detection in structured text documents
Raad et al. DOM: specification and client reasoning
JP3418544B2 (ja) プログラムのテストデータ自動生成装置
US20070089115A1 (en) High performance navigator for parsing inputs of a message
KR100691261B1 (ko) 확장성 생성 언어 변경 처리 시스템 및 그 방법
Kirkegaard et al. Type checking with XML Schema in Xact
Walther ASP. Net 2.0 Unleashed
US20090222447A1 (en) Data processing apparatus and data processing method
Friesen et al. Parsing and creating XML documents with DOM
US8397226B2 (en) Pattern matching over structured literals
van den Berg et al. Matching source code using abstract syntax trees in version control systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110407

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110408

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: 20110527

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: 20110602

R150 Certificate of patent or registration of utility model

Ref document number: 4758080

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140610

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees