JP4988797B2 - オブジェクトを作成するための方法およびプログラム - Google Patents

オブジェクトを作成するための方法およびプログラム Download PDF

Info

Publication number
JP4988797B2
JP4988797B2 JP2009193622A JP2009193622A JP4988797B2 JP 4988797 B2 JP4988797 B2 JP 4988797B2 JP 2009193622 A JP2009193622 A JP 2009193622A JP 2009193622 A JP2009193622 A JP 2009193622A JP 4988797 B2 JP4988797 B2 JP 4988797B2
Authority
JP
Japan
Prior art keywords
tag
namespace
class
computer
tags
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
JP2009193622A
Other languages
English (en)
Other versions
JP2009283010A (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
Priority claimed from PCT/US2003/015692 external-priority patent/WO2004107195A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to JP2009193622A priority Critical patent/JP4988797B2/ja
Publication of JP2009283010A publication Critical patent/JP2009283010A/ja
Application granted granted Critical
Publication of JP4988797B2 publication Critical patent/JP4988797B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • 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/137Hierarchical processing, e.g. outlines
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は一般にコンピュータシステムに関し、より詳細には、オブジェクトおよびオブジェクト型の階層を宣言的に作成するための方法およびシステムに関する。
マークアップ言語は一般に、作成しやすく、理解しやすい。拡張可能なマークアップ言語は、一般にXMLとして知られており、今日使用されている最も一般的なマークアップ言語の1つである。XMLとは、構造化された情報をWebに運ぶように設計されている形式である。これは、電子データ交換用のWebベースの言語である。XMLは、ハイパーテキストマークアップ言語(HTML)および他のWeb関連の標準を維持し、促進する責任を負う標準化団体であるWorld Wide Web Consortium(W3C)のオープンな技術標準である。
XMLは、不必要な機能を削除しながらコンテキストによる分離という構造的に重要な側面を保つ標準一般化マークアップ言語(SGML)の一部である。XML文書形式は、その構造を表すタグ内にその内容を埋め込む。また、XMLは、文書の文法の規則を表す能力も提供する。これら2つの特徴によって、データおよびメタデータの自動的な分離が可能となり、一般のツールがその文法に対してXML文書を確認することができる。
XMLは、システム統合のために設計されている。XMLは、広範囲に実施可能であり、配備しやすいことがわかっている、データの構造的表現を提供する。タグの存在によってマークされた情報を要素と呼ぶ。一致した開始タグおよび終了タグを使用して情報をマークアップする。属性と呼ばれる名前値の対を付加することによって、要素をさらに説明することができる。XML要素は、その関連するデータを任意の所望のデータ要素であると宣言することができる。例えば、要素は小売価格、本のタイトルなどとすることができる。現在XMLは、アプリケーションデータ(ビジネス文書、EDIメッセージなど)、アプリケーションのユーザインターフェース、XHTML、および固定された1組のタグを有する他の文法の文法ベースの表現に適用されている。
こうした文法ベースの表現は、固定された1組のタグを容易に拡張して新しいタイプのXML要素を作成することができる能力がないという点で限られている。さらに、コンピュータ業界がオブジェクト指向のプログラミングに着々と移行していくにつれて、XMLは、拡張可能な構成要素のオブジェクトを十分に表さなくなってきている。これらのオブジェクトは、他のソフトウェアプログラムによって再利用可能であり、新しいオブジェクトは、既存のオブジェクトから容易に拡張することができる。その結果、プログラマは、オブジェクトの階層を、宣言的にではなく、プログラム言語でプログラム的に作成することが多い。オブジェクトの階層は、使用時にはいつでもプログラミング言語で作成する必要がある。
オブジェクトおよび型の階層をプログラムロジックとともに宣言的に作成する能力をプログラマに提供するシステムを、当業者は逃してきた。
本発明は、オブジェクトの階層をマークアップ言語で宣言的に定義する機構を指向する。こうしたオブジェクトには、Microsoft.NET frameworkの共通言語ランタイム型などのオブジェクトがある。ユーザインターフェースなどの項目を実施する従来の方法では、項目は同期に作成する必要がある。非常に大きい項目の場合、項目のロードは、時間により制限される可能性がある。本発明は、1つの階層(すなわちツリー)内のオブジェクトを同期または非同期に作成できる能力をユーザに提供する。
マークアップ言語はXMLベースである。オブジェクトは、マッピングに基づくマークアップ言語で書かれる。マッピングは、オブジェクトクラスが指定されるアセンブリおよび名前空間を有する定義ファイルの位置を定義するURL属性を含む。マークアップ言語によるタグ名は、クラス名にマップされる。タグの属性は、タグに関連するクラスのプロパティおよびイベントにマップされる。クラスに直接マップされない属性は、定義タグで定義される。また、プログラミングコードのページへの追加にも定義タグを使用する。
本発明はさらに、マークアップ言語を解析してオブジェクトの階層を作成する方法を含む。本発明の機構によってタグがマップされているクラスが検索されるように、定義ファイルを使用してオブジェクトクラスがどこに配置されているかを決定する。クラスが決定されると、クラスのプロパティセクションおよびイベントセクションで属性名が検索される。クラスのオブジェクトのインスタンスが作成される。属性は、複合プロパティを使用して指定することができる。
本発明は、マークアップ言語を使用してユーザインターフェース、ベクトル図形、および文書などの項目を同期または非同期に作成する機能を提供する。文書には、固定形式文書、および適応的フロー(adaptive−flow)文書などがある。固定形式文書とは、装置に依存しないやり方で、ページ数および各ページでのオブジェクトの位置を明示的に定義する文書である。適応的フロー文書とは、ページサイズが変更されるたびに、自動的にページを付け直し、各ページにおいてオブジェクトを再配置することができる文書である。
本発明の他の特徴および利点は、添付の図面を参照して進める以下の実施形態の例の詳細な説明から明らかになる。
本発明が存在するコンピュータシステムの例を示す概略ブロック図である。 本発明が動作可能な環境の例を示す概略ブロック図である。 マークアップ言語と図2の環境の例との間のマッピングを示す概略ブロック図である。 本発明によるマークアップファイルを解析する諸ステップを示すフロー図である。
添付の特許請求の範囲には本発明の特徴を詳細に記載しているが、本発明、およびその目的および利点は、添付の図面を併せ読むことによって、以下の詳細な説明から最もよく理解できる。
本発明は、ユーザが、オブジェクトの階層、およびオブジェクトの階層の背後にあるプログラムロジックをXMLベースのマークアップ言語により指定できる機構を提供する。これによって、オブジェクトモデルをXMLで記述する能力が提供される。1つの結果は、Microsoft社による.Net Frameworkの共通言語ランタイム(CLR)でのクラスなど拡張可能なクラスにXMLでアクセスできることである。CLRでのクラスの数は増え続けている。これは、オブジェクトモデルのXML表現が動的に増加していることを意味する。本明細書で説明するように、この機構は、XMLタグのCLRオブジェクトへの直接のマッピングおよび関連するコードをマークアップで表す能力を提供する。この機構を使用して、固定形式文書、適応的フロー文書、ベクトル図形、アプリケーションユーザインターフェースおよびコントロールなど、および上記の任意の組合せを、XMLマークアップによって作成することができる。
図面を参照すると、図中、同様の参照番号は同様の要素を指しており、本発明を適したコンピューティング環境で実施されるものとして示している。必須ではないが、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。さらに、本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施できることを当業者であれば理解できよう。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施できる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリ記憶装置に置くことができる。
図1は、本発明を実施できる、適したコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティングシステム環境100を、動作環境(符号100)の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施できる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含む。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISA(Industy Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standard Associte)ローカルバス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスなどがある。
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せもコンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。BIOS(basic input/output system)133は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般に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に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置181のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域エリアネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、パーソナルコンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、パーソナルコンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
以下の説明では、特に指定のない限り、1つまたは複数のコンピュータによって実行される動作および操作のシンボルを参照して本発明を説明する。したがって、コンピュータで実行されると言うこともあるこうした動作および操作が、コンピュータの処理単位による構造化された形式のデータを表す電気信号の操作を含むことは理解されよう。この操作は、データを変換し、またはコンピュータのメモリシステムのいくつかの場所にデータを維持し、これによって当業者にはよく理解されているようにコンピュータが再構成され、そうでない場合はその動作が変更される。データが維持されるデータ構造は、データの形式で定義された特定の特性を有するメモリの物理位置である。しかし、本発明を上記の文脈で説明しているが、以下に記載する様々な動作および操作をハードウェアでも実施できることを当業者であれば理解できるので、これに限定されるものではない。
上記に示したように、.NET FrameworkのCLRでの拡張可能なクラスには、本発明ではXMLでアクセスすることができる。必ずしも必要ではないが、本発明が提供する利益をよりよく理解するために.NET frameworkの概略が有益となり得る。ここで図2を参照すると、最も簡単に表現した.NET framework200は、CLR202、フレームワーククラスライブラリ204、ユーザインターフェース206、およびWebサービスおよびアプリケーション208から成る。.NET frameworkは、オペレーティングシステム134など、マシンのオペレーティングシステムに存在する。
ユーザインターフェース206およびWebサービスおよびアプリケーション208は、ファイルアクセスを含む一般の入/出力、XMLサポート、およびサービスを提供する。これらは、HTTPからHTMLへのWeb技術およびサービスを公開し、Webページおよび/または従来のWindows(登録商標)ベースのユーザインターフェースを構築するユーザインターフェース要素を提供し、ASP.NETおよび他の多くのサービスを公開する。
CLR202は、メモリを管理し、スレッドおよびプロセスを起動および停止し、セキュリティポリシーを実施する責任を負う。これは、プログラミング言語に依存しないデータ型の概念を提供する共通型システムを提供し、これによって様々なプログラミング言語が.Net frameworkにおいてデータおよびコードを共有できるようになる。また、CLR202は、特定のマシンがマシンのシステムプロセッサ上でネイティブに実行するように、MSIL(Microsoft中間言語)コードを変換し、最適化するJITコンパイラ(just−in−time)を有している。
フレームワーククラスライブラリは、いくつかのクラスを含む。1つのクラスは、オブジェクトが実行できる操作(メソッド、イベント、またはプロパティ)を定義し、オブジェクトの状態を保持する値(フィールド)を定義する。クラスは、一般に定義および実装を含んでいるが、実装を有していない1つまたは複数のメンバを有することができる。共通型システムは、ランタイムにおいて型がどのように宣言され、使用され、管理されるかを定義する。.NET framework型は、階層を含むドット構文名前付け方式(dot syntax naming scheme)を使用する。この技術は、関連する型を名前空間にグループ分けし、それらをより容易に検索でき、参照できるようにする。右端のドットまでの完全名の第1の部分は、名前空間名である。名前の最後の部分は、型名である。例えば、System.Collections.ArrayListは、System.Collections名前空間に属しているArrayList型を表している。System.Collectionsの型を使用して、オブジェクトの集まりを操作することができる。クラスがこのように系統立てられると、名前空間が果たす目的、およびそれがどのクラス機能を含むかを理解しやすくなる。例えば、System.Web.Servicesは、そのクラスが何らかのWeb機能のサービスを提供することを伝える。同様に、System.Windows(登録商標).Shapesは形状のサービスを提供すると判断しやすい。クラスを意味をつかみやすい統一クラスに論理的にグループ分けすることに加えて、名前空間は、ユーザが既存のものから各自の名前空間を導出できるという点で、拡張性がある。例えば、System.Web.UI.ACMECorpはSystem.Web.UIから導出することができ、カスタムUI要素を提供することができる。フレームワークの名前空間は、ソリューションの構築および稼動に必要な「システム」または基本機能およびサービスを提供する。
以下の説明で、本発明は、本発明の特徴をXMLから区別するためにxamlの用語を使用して説明する。次に図3を参照すると、本発明は、CLR概念300のXML310への直接マッピングを提供する。名前空間302は、リフレクション(reflection)と呼ばれるCLR概念を使用して、xmlns宣言312を介して検索される。クラス304は、XMLタグ314に直接マップする。プロパティ306およびイベント308は、属性316に直接マップする。ユーザは、このマッピングを使用して、XMLマークアップファイル内の任意のCLRオブジェクトの階層ツリーを指定することができる。
xamlファイルは、拡張子が.xamlで、メディアタイプがapplication/xaml+xmlのxmlファイルである。xamlファイルは、一般にxmlns属性を使用して名前空間を指定する1つのルートタグを有する。特定のルートタグは必要なく、それによってユーザは、ルートとして異なるCLR関連のタグを有することができる。名前空間は、他のタイプのタグで指定することができる。
デフォルトの1組の名前空間を使用する。一実施形態では、5つの名前空間を使用する。これらの名前空間は、(要素のクラスを有する)System.Windows(登録商標)、(ボタン、パネル、テキストパネルなどのコントロール要素のクラスを有する)System.Windows(登録商標).Controls、(文書中心のテキストレンダリング要素のクラスを有する)System.Windows(登録商標).Documents、(Windows(登録商標)Vector Graphics要素のクラスを有する)System.Windows(登録商標).Shapes、および(スクロールビューアなどブロック要素を構築するクラスを有する)System.Windows(登録商標).Controls.Atomsであり、xmlns宣言で指定される。他の名前空間を使用してもよく、デフォルトの組は、用途に応じて構成可能である。
上述したように、xamlファイルのタグは、一般にCLRオブジェクトにマップする。タグは、要素、複合プロパティ、定義、またはリソースとすることができる。要素は、一般にランタイム中にインスタンス化され、オブジェクトの階層を形成するCLRオブジェクトである。これらの要素は階層に留まる。一部の要素は、必要な場合のみにインスタンス化される。要素は、.NET frameworkに適合するように、大文字で表す。一実施形態では、要素の主な組が5つある。これらは、Panel、Control、DocumentElement、Shape、およびDecoratorである。Panelは、要素がページにどのように配列されるかを定義するために使用する。Panelの例には、TextPanel、DockPanel、Canvas、FlowPanel、およびTableがある。Controlは、対話式の経験を提供する。Controlの例には、Button、RadioButton、およびListBoxがある。DocumentElementは、流し込みテキストをレンダリングし、その書式設定をするために使用する。これらの要素は、他の要素を含むことができる任意の要素内に配置することができる。DocumentElementの例には、Paragraph、Section、Bold、およびItalicがある。ShapeはVector Graphicの要素である。Shapeの例には、Ellipse、Line、およびPathがある。Decoratorは、子を1つしか持てないことを除いてPanel要素に似ている。Decoratorの例には、BorderおよびGlowがある。
複合プロパティタグを使用して、親タグ内にプロパティを設定する。これについて以下で詳述する。ランタイム中、複合プロパティタグは、階層ツリー内に一要素として存在してはいない。定義タグは、ページにコードを追加し、リソースを定義するために使用する。定義タグは、xamlページで、またはxamlページの構成要素内で<def:xyz>として識別される。この場合、xyzは定義される項目である。例えば<def:Code>は、コードをページに追加するために使用され、<def:Resources>は、1つまたは複数の再利用可能なリソースを定義する。<def:Resources>タグ内に表示されるタグは、任意の要素または任意のCLRオブジェクトにマップすることができる。リソースタグは、単にツリーをリソースとして指定しているオブジェクトのツリーを再利用する能力を提供する。定義タグは、別のタグ内でxmlns属性として定義することもできる。
上述したように、属性は、クラスに関連するプロパティおよびイベントにマップする。一部の属性は真のCLRクラスと関連付けられないため、定義タグも使用して、これらの属性を、プロパティまたはイベントにマップする属性と区別する。次の表には、こうした属性をまとめている。
Figure 0004988797
基本の名前空間からxmlns属性、クラス名からタグ名、ならびにプロパティおよびイベントから属性へのマッピングおよび定義済みの属性について説明してきたので、xamlファイルの解析時に本発明が行うステップについて説明する。以下xamlパーサーと呼ぶ本発明のパーサーは、ルートタグから、タグを見つけるためにどのCLRアセンブリおよび名前空間を検索すべきかを決定する。ルートタグの例は、次の形式のものである。
Figure 0004988797
xamlパーサーは、xmlns属性によって指定されるURLディレクトリ内で名前空間定義ファイルを探す。例えば上記のルートタグの例で、xamlパーサーは、http://microsoft.com/xaml/2004/xmlns.definitionで定義ファイルを検索する。
名前空間定義がxmlns位置にないシナリオでは、一実施形態では<?Mapping?>タグを使用する。アセンブリに組み込まれているカスタム構成要素の場合、タグは
<?Mapping xmlns="foo" Namespace="ACME.Widgets" Assembly="acme" ?>の形式のものである。ユーザが実装を提供する別のエンティティ(例えばw3c.org)によって制御されるあるサイトをxmlnsが指す名前空間では、タグは、
<?Mapping xmlns="http://www.w3c.org/2000/svg"
xmlnsdefinition="http://www.acme.com/svg/2000/xmlns.definition ?>の形式のものである。名前空間は、xmlns:foo=http://www.ACME/fooの形式を使用して指定することもできる。これは、名前空間「foo」を定義する。上述したように、名前空間は、別のタイプのタグで指定することもできる。例えば、名前空間は、次のMyCoolButtonタグで指定される。
Figure 0004988797
名前空間定義ファイルは、アセンブリの名前およびそのインストールパス、およびCLR名前空間のリストを提供する。定義ファイルの例は次の通りである。
Figure 0004988797
xamlパーサーが新しいxmlns定義ファイルに出会うと、定義ファイルは、フェッチされ、ローカルに格納される。
パーサーは、タグに出会うと、タグのxmlnsおよびそのxmlnsのxmlns定義ファイルを使用してそのタグがどのCLRクラスを参照するかを決定する。例えば、タグが<Text xmlns=“...”>の場合、パーサーは、定義ファイルで提供された名前空間内でテキストと呼ばれるクラスを検索する。パーサーは、アセンブリおよび名前空間がその定義ファイルで指定されている順序で検索する。一致を見つけると、パーサーは、クラスのオブジェクトをインスタンス化する。
xamlタグ内の属性は、2つの方法のうちの一方で使用される。それは、プロパティを設定すること、またはイベントハンドラを連結することのいずれかである。例えば、xamlパーサーは、以下のタグ
<Button Text="OK" Background ="Red" Click= "RunHandler" ID="bl">
をテキスト、背景、およびクリックプロパティおよび/またはイベントを有するButtonと呼ばれるクラスとして解釈する。パーサーは、Buttonクラスのプロパティセクションにおいてテキスト、背景、およびクリック名を検索する。名前がプロパティセクションにない場合、パーサーは、イベントセクションで名前を探す。
上記の例で、パーサーは、TextおよびBackgroundはプロパティであり、Clickはイベントであると決定する。テキスト文字列「OK」が設定される。テキスト文字列の設定より複雑なプロパティおよびイベントの場合、CLR型コンバータを使用して、文字列に変換する、また文字列から変換するオブジェクトを作成する。例えば、プロパティBackgroundは、CLR型の型Paintであると決定される。型PaintのCLR型コンバータを使用して、文字列「Red」を型Paintのオブジェクトに変換する。この文字列は、Buttonの背景色の値として設定される。同様に、Clickイベントは、RunHandlerメソッドに連結され、IDプロパティはb1に設定される。
プロパティは、簡単な属性、文字列値を有する複合プロパティ、または値としてオブジェクトを有する複合プロパティとして設定することができる。簡単な属性は、<Button Background=“Blue”/>という形式のものである。この場合「Blue」は、型Paint(Backgroundプロパティの型)のオブジェクトに文字列をどのように変換するかを知っている型コンバータを呼び出すことによって解釈される。次いでこれをButtonのBackgroundプロパティの値として設定する必要がある。属性値が*で開始する場合、属性は、リテラル値を指定しておらず、代わりに新しくインスタンス化されたオブジェクトまたは既存のオブジェクトと等しい値を設定している。
文字列値を有する複合プロパティは、次の形式のものである。
<Button>
<Button.Background>Blue</Button.Background>
</Button>
その中にピリオドが含まれているタグは、そのタグがプロパティへの参照であることを示す。パーサーは、後ろにピリオドが続く親タグのタグ名(例えば「Button.Background」タグの「Button」)で始まるタグを見つけると、そのピリオドの後ろの名前(例えば「Button.Background」タグの「Background」)によって指定されるプロパティを検索する。この場合、「Blue」は、文字列を型Paint(Backgroundプロパティの型)のオブジェクトに変換する方法を知っている型コンバータを呼び出すことによって解釈する必要がある。次いでこれをButtonのBackgroundプロパティの値として設定する必要がある。
別のクラスからのプロパティもタグで宣言することができる。例えば、
<TextBox Button.Background="Blue">
のタグは、属性Button.BackgroundがTextBoxクラスとは異なるクラスにマップされることを示す。パーサーは、ピリオドを見つけ、そのピリオドの後ろの名前によって指定されるプロパティ(例えば「Button.Background」タグの「Background」)をピリオドの前の名前によって指定されるクラス(例えば「Button」)内で検索する。
値としてオブジェクトを含む複合プロパティは、次の形式のものである。
Figure 0004988797
この場合、CLR HorizontalGradientオブジェクトが作成され、次いでBottonのBackgroundプロパティの値として設定される。
複合プロパティ構文を使用すると、単に値に対してオブジェクトを提供するだけではない。例えば次のように、Animationまたは一部のデータへのBindを達成することができる。
Figure 0004988797
これらの場合、タグは、特徴を提供するための適切なシステムを設定する能力をAnimationまたはBindに提供するために使用される。例えば、Animationオブジェクトを作成した後、xamlパーサーは、IApplyValueと呼ばれるインターフェースを実装したかどうかを確認するためにオブジェクトに照会する。実装している場合、xamlパーサーは、ColorAnimationObject.ApplyValue(elementReference, BackgroundPropertyID)を呼び出す。次いでColorAnimationObjectは、Animationに連結する。オブジェクトがインスタンスをサポートしていない場合、xamlパーサーは、ButtonのBackgroundプロパティをColorAnimationObjectに設定する。
上述したように、属性値が*で開始する場合、この属性は、新しくインスタンス化されたオブジェクトまたは既存のオブジェクトに等しい値を設定している。xamlパーサーは、*の後ろの名前を探し、*の後ろの名前のCLR型を探す。例えば、<Button Background = "*HorizontalGradient(Start=Red End=Blue)">タグでは、パーサーは、括弧の前の名前(すなわちHorizontalGradient)を決定し、前のxmlns設定値によって確立された現在の名前空間内でそのCLR型を検索する。パーサーは、括弧の後の項目を属性および値として扱う(例えばstartは属性であり、redはその属性の値である)。「*」エスケープ文字の使用の他の例を以下に示す。これらのすべての場合に、値が一度設定される。このプロパティと何らかのオブジェクトとの間の関係を維持するのに式または結合は設定しない。前方の参照は可能である。ツリー作成中、参照されるオブジェクトがまだ存在していない場合、それが現れるまで、またはツリーが完全に作成されるまでそのプロパティの設定が遅延する。
Figure 0004988797
Figure 0004988797
プログラミング言語は、.xamlページの2つの場所に関連付けることができる。これらの場所は、.xamlファイル、および関連するコードビハインドファイル(code−behind file)の中にある。コードビハインドファイルは、一般に.xamlファイルと同じ名前が付けられ、末尾にプログラミング言語の一般の拡張子が添付されている。例えば、.xaml.csはC#、.xaml.vbはVB、.xaml.jsはJscriptの場合に使用される。xmlns:def=“Definition”の名前空間は、コードをページに追加するのに必要なタグを使用するために、ルート要素に追加される。ユーザは、def:Language属性をページのルート要素に追加することによってxamlページに関連するプログラミング言語を選択する。例えば、次のタグは、定義および言語属性がルート要素にどのように追加されるかを示している。<DockPanel xmlns="http://microsoft.com/xaml/2005" xmlns:def="Definition" xmlns:Language="C#">
「>」、「<」および/または「&」文字を含むxamlファイル内にコードを追加するために、XMLで定義されたCDATAセクションが<def:Code>セクションに必要である。この例を以下に示す(この例では、含まれているコードは、「<」、「>」、または「&」文字を使用しないため、CDATAの括弧付けは必要ない)。
Figure 0004988797
コードビサイドファイル(code−beside file)内においてコードを指定するには、ソース属性を使用する。ソース属性は、xamlファイルのコードビハインドにURIを提供する。URIは、相対または絶対とすることができる。URIおよび簡単なコードビサイドファイルを指定する例を以下に示す。
Figure 0004988797
簡単なコードビサイドファイルは次の通りである。
Figure 0004988797
Figure 0004988797
また、xamlパーサーは、ILiteralContentと呼ばれる特徴をサポートしている。ILiteralContentを実装するオブジェクトでは、xamlパーサーは、オブジェクトのタグを文字列として扱い、タグを解析しない。例えば、PublicクラスのFooObjectがILiteralContentを実装する場合、xamlパーサーがタグ<FooObject>“I am a string”</FooObject>に出会うと常に、パーサーは、FooObjectのインスタンスを作成し、<FooObject>タグ内のデータ(例えば「I am a string」)を新しく作成されたFooObjectに渡す。
要するに、要素/オブジェクトが直接含むルートタグを解析するときに以下の規則を使用する。図4を参照すると、タグがスキーマ位置を指定するxmlns属性を有する場合、xmlns属性に関連するアセンブリ/名前空間を有する定義ファイルは、ローカルに配置され、格納される(ステップ400)。アセンブリ/名前空間は一般に、文書のルートタグまたはマッピングタグでスキーマのURLを使用して検索される。タグが要素タグである場合、パーサーは、要素がそこで指定されているxml名前空間に基づいて、その名前のクラスを適切な1組のアセンブリ/名前空間で探し、そのクラスのオブジェクトのインスタンスがインスタンス化される(ステップ402)。クラス名が見つからない場合、xamlパーサーは、包含側の親がその名前のプロパティを有しているかどうかをチェックする。それが包含側要素のプロパティである場合、xamlパーサーは、複合プロパティ規則を使用してそのタグの内容を解析する。タグが属性タグの場合、その属性に関連するプロパティまたはイベントが設定される(ステップ404)。属性値が*で開始する場合、属性は、リテラル値を指定しておらず、代わりに新しくインスタンス化されたオブジェクトまたは既存のオブジェクトに等しい値を設定している。タグは、親タグ上にプロパティを設定するために使用するタグを有していてもよい。タグは、複合プロパティである。タグが複合プロパティの場合、複合規則に従う(ステップ406)。こうした規則を以下に示す。xamlパーサーは、複合プロパティが文字列であるかどうかを決定する。内容が文字列である場合、xamlパーサーは、設定されるプロパティの適切な型の型コンバータを呼び出す。親タグの内容が別のタグである場合、xamlパーサーは、オブジェクトを基準としてインスタンス化する。オブジェクトをインスタンス化した後、xamlパーサーは、それをプロパティの値として親オブジェクトに設定する。タグのxmlnsが「def:」の場合、xamlパーサーは、後述するように、内蔵されている1組の意味(a set of built in meanings)を使用する(ステップ408)。ファイル内の次のタグが解析され(ステップ410)、xamlパーサーがxamlファイルの終了ルートタグを検出するまで、ステップ400から408がタグごとに繰り返される。
本発明は、オブジェクトモデルをマークアップタグを使用してXMLベースのファイルで表すことができる機構を提供することが上記からわかる。オブジェクトモデルをマークアップタグとして表すことができるこの能力を使用すると、ベクトル図形、固定形式文書、適応的フロー文書、およびアプリケーションUIを作成することができる。こうしたベクトル図形、固定形式文書、適応的フロー文書、およびアプリケーションUIは、非同期または同期に作成することができる。これによって、これらの項目をマークアップから構築してオブジェクトのツリーを作成することができるという利益が得られる。
固定形式文書は、予め決定されている装置に依存しないやり方で、文書ページ数およびサイズ、ならびに各ページでのオブジェクトの位置を明示的に定義する文書である。これによって、文書の表示に使用する実装システムに関係なく同じページがレンダリングされる形式で文書を作成し、共有できる能力がユーザに提供される。一実施形態では、固定形式文書のルートタグの一方は<FixedPanel>であり、ページは<Fixed Page>タグを使用して指定される。固定ページ内に、いくつかのタイプの要素を使用することができる。これらの要素には、テキスト、ベクトル図形、および画像などがある。フォントおよび共有画像などの外部リソースが指定される。テキストに使用するタグは、個々の文字グリフおよび文字グリフの位置に対する正確な制御をユーザに提供する。他のタグは、テキスト、ベクトル図形、および画像がどのように1ページに結び付けられるかに対する制御をユーザに提供する。xamlパーサーは、固定形式文書のタグを認識する。他の任意のタイプの.xamlファイルと同様、パーサーは、タグに関連するCLR名前空間およびクラスを決定し、xamlファイル内のタグの型コンバータを呼び出し、固定形式文書をレンダリングする。
適応的フロー文書には、予め決定されているページサイズはない。適応的フロー文書におけるテキスト、画像、DocumentElement、および他のオブジェクトの組は、様々なページ幅に合うようにページ上に流出し、または再配置される。例えば、表示画面上のウィンドウにレンダリングされたページは、使用しているコンピューティングシステム、またはユーザの選好に応じて、異なる表示画面上では異なる幅となる可能性がある。印刷されるページは、ページサイズに応じて幅が異なる。例えば、テキストの行は、ページの幅が狭くなるとより短くなり、それによってテキストは、追加の単語をテキスト行からテキスト行にカスケード式の順序でページのさらに下方の行に流出し、または再配置される。属性を使用して、適応的フロー文書がどのように表示されるかに対するユーザの選好を指定する。
xamlパーサーは、これらの属性を、オブジェクトのCLR型コンバータに渡して文書を作成する。オブジェクトは、ページ番号の振られていない、またはページ番号の振られているプレゼンテーションを作成することができる。ページ番号の振られていないプレゼンテーションでは、縦方向のスクロールバーなどのコントロールを用いて、表示画面上に底部のない単一のページが表示される。ページ番号の振られているプレゼンテーションでは、ページ高さに基づいて文書内容をセグメントに分割し、次ボタンや前ボタンなどのコントロールを用いて、各ページを表示画面に別個に表示する。別の属性は、ページ上の列幅および列数、すべてのテキスト要素のサイズ、テキスト行間隔、すべての画像および図形のサイズおよび位置、ならびにマージン幅および段組間の幅を決定する。またユーザは、ページサイズに合わせて最適に読めるように、文書を作成するオブジェクトが、列、テキストサイズおよび行間隔、画像サイズおよび位置、マージンおよび段組間の幅、ならびに他のページまたはテキストパラメータを自動的に調整すべきかどうかを属性によって指定することもできる。xamlパーサーは、適応的フロー文書のタグを解析し、タグに関連するCLR名前空間およびクラスを決定し、適応的フロー文書をレンダリングするためにxamlファイル内で指定されたオブジェクトの型コンバータを呼び出す。
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面との関連で本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアに、またその逆に実装でき、あるいは、実施形態の例を、本発明の意図から逸脱することなく、構成および詳細について変更できることを当業者であれば理解されよう。したがって、本明細書に記載した本発明は、添付の特許請求の範囲、およびその均等物の範囲内に含まれ得るすべての実施形態を企図する。

Claims (2)

  1. 処理ユニット及びコンピュータ読み取り可能な記憶媒体を備えるコンピュータが、複数のタグを有する拡張可能マークアップ言語ファイルを解析してオブジェクトを作成するための方法であって、
    前記処理ユニットが、ネットワークに接続されたリモートコンピュータのURLディレクトリを指定するxmlns属性を有する第1のタグの前記URLディレクトリから、前記URLディレクトリをルートとする少なくとも1つの名前空間が記述された名前空間定義ファイルを検索するステップと、
    前記処理ユニットが、前記名前空間定義ファイルを前記コンピュータ読み取り可能な記憶媒体にローカルに格納するステップと、
    前記複数のタグのうちの前記第1のタグ以外のタグごとに、
    前記処理ユニットが、前記少なくとも1つの名前空間内から前記タグの名前と一致するクラスを検索するステップと、
    前記処理ユニットが、前記タグの名前と一致するクラスのオブジェクトをインスタンス化するステップと
    を含むことを特徴とする方法。
  2. 処理ユニット及びコンピュータ読み取り可能な記憶媒体を備えるコンピュータに、複数のタグを有する拡張可能マークアップ言語ファイルを解析してオブジェクトを作成する方法を実行させるためのプログラムであって、前記方法は、
    前記処理ユニットが、ネットワークに接続されたリモートコンピュータのURLディレクトリを指定するxmlns属性を有する第1のタグの前記URLディレクトリから、前記URLディレクトリをルートとする少なくとも1つの名前空間が記述された名前空間定義ファイルを検索するステップと、
    前記処理ユニットが、前記名前空間定義ファイルを前記コンピュータ読み取り可能な記憶媒体にローカルに格納するステップと、
    前記複数のタグのうちの前記第1のタグ以外のタグごとに、
    前記処理ユニットが、前記少なくとも1つの名前空間内から前記タグの名前と一致するクラスを検索するステップと、
    前記処理ユニットが、前記タグの名前と一致するクラスのオブジェクトをインスタンス化するステップと
    を含むことを特徴とするプログラム。
JP2009193622A 2003-05-16 2009-08-24 オブジェクトを作成するための方法およびプログラム Expired - Fee Related JP4988797B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009193622A JP4988797B2 (ja) 2003-05-16 2009-08-24 オブジェクトを作成するための方法およびプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2003/015692 WO2004107195A1 (en) 2003-05-16 2003-05-16 Declarative mechanism for defining a hierarchy of objects
JP2009193622A JP4988797B2 (ja) 2003-05-16 2009-08-24 オブジェクトを作成するための方法およびプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004567659A Division JP2006526180A (ja) 2003-05-16 2003-05-16 オブジェクトの階層を定義するための宣言的(declative)機構

Publications (2)

Publication Number Publication Date
JP2009283010A JP2009283010A (ja) 2009-12-03
JP4988797B2 true JP4988797B2 (ja) 2012-08-01

Family

ID=56291125

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009193622A Expired - Fee Related JP4988797B2 (ja) 2003-05-16 2009-08-24 オブジェクトを作成するための方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4988797B2 (ja)

Also Published As

Publication number Publication date
JP2009283010A (ja) 2009-12-03

Similar Documents

Publication Publication Date Title
US7464329B2 (en) Declarative mechanism for defining a hierarchy of objects
US7577938B2 (en) Data association
US7178101B2 (en) Content template system
US20040046789A1 (en) Extensible user interface (XUI) framework and development environment
US20050188350A1 (en) Data binding
US8095565B2 (en) Metadata driven user interface
US6753885B2 (en) System and theme file format for creating visual styles
US7155705B1 (en) Techniques for binding an application with a data exchange format based on tags in comments
US6678889B1 (en) Systems, methods and computer program products for locating resources within an XML document defining a console for managing multiple application programs
US10061575B2 (en) Managed execution environment for software application interfacing
US20050091672A1 (en) Facilitating presentation functionality through a programming interface media namespace
US8413070B1 (en) Declarative resizeable list in electronic form
US20100011284A1 (en) Dynamic web page behavior
WO2002023336A1 (en) Xml-based graphical user interface application development toolkit
KR20080033403A (ko) 웹 페이지 렌더링 우선순위 메카니즘
Phelps et al. The multivalent browser: a platform for new ideas
US20040133595A1 (en) Generation of persistent document object models
US8458586B2 (en) X/HTML support for silverlight applications
US20100269032A1 (en) Advanced text completion, such as for markup languages
KR101292982B1 (ko) Clr 객체의 계층 구조 결정 방법, 컴퓨터 판독가능 매체, 객체를 선언적으로 정의하는 방법, clr 객체의 계층 구조 결정 메카니즘, 및 clr 객체를 선언적으로 정의하는 장치
de Moura et al. Interface Development for Hypermedia Applications in the Semantic Web.
US20050268233A1 (en) System and method for mixed language editing
US20030222904A1 (en) Method and system for displaying information on a user interface
Nebeling et al. XCML: providing context-aware language extensions for the specification of multi-device web applications
JP4988797B2 (ja) オブジェクトを作成するための方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100917

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110118

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

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

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees