JP2006526180A - オブジェクトの階層を定義するための宣言的(declative)機構 - Google Patents

オブジェクトの階層を定義するための宣言的(declative)機構 Download PDF

Info

Publication number
JP2006526180A
JP2006526180A JP2004567659A JP2004567659A JP2006526180A JP 2006526180 A JP2006526180 A JP 2006526180A JP 2004567659 A JP2004567659 A JP 2004567659A JP 2004567659 A JP2004567659 A JP 2004567659A JP 2006526180 A JP2006526180 A JP 2006526180A
Authority
JP
Japan
Prior art keywords
tag
class
name
attribute
computer
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.)
Pending
Application number
JP2004567659A
Other languages
English (en)
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 JP2006526180A publication Critical patent/JP2006526180A/ja
Pending 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/10Services
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Document Processing Apparatus (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

オブジェクトをマークアップ文書内で宣言的に指定することができる方法およびデータ構造について記載する。マークアップ文書は、XMLベース(310)とすることができる。本発明によれば、オブジェクトは、マッピングに基づいて書かれる。マッピングは、クラス(304)が指定されるアセンブリおよび名前空間(302)を有する定義ファイルの位置を定義するURL属性(316)を含む。クラス名(304)は、マークアップ文書(310)にタグ名(314)としてマップされる。クラス(304)のプロパティ(306)およびイベント(308)は、クラス(304)に関連するタグ(314)の属性(316)にマップされる。この方法はさらに、マークアップ言語(310)を解析してオブジェクトの階層を作成する方法を含む。クラス(304)に直接マップされない属性(316)は、定義タグで定義される。また、プログラミングコードのページへの追加にも定義タグを使用する。

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)文書などがある。固定形式文書とは、装置に依存しないやり方で、ページ数および各ページでのオブジェクトの位置を明示的に定義する文書である。適応的フロー文書とは、ページサイズが変更されるたびに、自動的にページを付け直し、各ページにおいてオブジェクトを再配置することができる文書である。
本発明の他の特徴および利点は、添付の図面を参照して進める以下の実施形態の例の詳細な説明から明らかになる。
添付の特許請求の範囲には本発明の特徴を詳細に記載しているが、本発明、およびその目的および利点は、添付の図面を併せ読むことによって、以下の詳細な説明から最もよく理解できる。
本発明は、ユーザが、オブジェクトの階層、およびオブジェクトの階層の背後にあるプログラムロジックを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 2006526180
基本の名前空間からxmlns属性、クラス名からタグ名、ならびにプロパティおよびイベントから属性へのマッピングおよび定義済みの属性について説明してきたので、xamlファイルの解析時に本発明が行うステップについて説明する。以下xamlパーサーと呼ぶ本発明のパーサーは、ルートタグから、タグを見つけるためにどのCLRアセンブリおよび名前空間を検索すべきかを決定する。ルートタグの例は、次の形式のものである。
Figure 2006526180
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 2006526180
名前空間定義ファイルは、アセンブリの名前およびそのインストールパス、およびCLR名前空間のリストを提供する。定義ファイルの例は次の通りである。
Figure 2006526180
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 2006526180
この場合、CLR HorizontalGradientオブジェクトが作成され、次いでBottonのBackgroundプロパティの値として設定される。
複合プロパティ構文を使用すると、単に値に対してオブジェクトを提供するだけではない。例えば次のように、Animationまたは一部のデータへのBindを達成することができる。
Figure 2006526180
これらの場合、タグは、特徴を提供するための適切なシステムを設定する能力を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 2006526180
Figure 2006526180
プログラミング言語は、.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 2006526180
コードビサイドファイル(code−beside file)内においてコードを指定するには、ソース属性を使用する。ソース属性は、xamlファイルのコードビハインドにURIを提供する。URIは、相対または絶対とすることができる。URIおよび簡単なコードビサイドファイルを指定する例を以下に示す。
Figure 2006526180
簡単なコードビサイドファイルは次の通りである。
Figure 2006526180
Figure 2006526180
また、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ファイル内で指定されたオブジェクトの型コンバータを呼び出す。
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面との関連で本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアに、またその逆に実装でき、あるいは、実施形態の例を、本発明の意図から逸脱することなく、構成および詳細について変更できることを当業者であれば理解されよう。したがって、本明細書に記載した本発明は、添付の特許請求の範囲、およびその均等物の範囲内に含まれ得るすべての実施形態を企図する。
本発明が存在するコンピュータシステムの例を示す概略ブロック図である。 本発明が動作可能な環境の例を示す概略ブロック図である。 マークアップ言語と図2の環境の例との間のマッピングを示す概略ブロック図である。 本発明によるマークアップファイルを解析する諸ステップを示すフロー図である。

Claims (49)

  1. ルートタグを有する拡張可能マークアップ言語ファイルからオブジェクトの階層を決定するための方法であって、
    前記ルートタグおよびマッピングタグの一方のxmlns属性から、少なくとも1つのアセンブリおよび少なくとも1つの名前空間を備えるリストを有する名前空間定義ファイルを決定するステップと、
    前記マークアップ言語ファイルのタグごとに
    前記少なくとも1つの名前空間内のクラスに前記タグの名前をマップするステップと、
    前記タグが属性を有している場合、
    前記クラスに関連するプロパティおよびイベントの一方、および別のクラスに関連する別のプロパティおよび別のイベントの一方の一方に前記属性をマップするステップと
    を含むことを特徴とする方法。
  2. 前記クラスのオブジェクトをインスタンス化するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記タグの名前を前記クラスにマップするステップは、前記少なくとも1つの名前空間内で前記タグの名前を検索するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記タグの名前を前記クラスにマップするステップは、前記タグの名前を前記クラスと前記プロパティとの一方にマップすることを含むことを特徴とする請求項1に記載の方法。
  5. 前記属性は属性名を有し、前記クラスに関連するプロパティおよびイベントの一方に前記属性をマップするステップは、
    前記クラスのプロパティセクションで前記属性名を検索するステップと、
    前記属性名が前記クラスのプロパティセクションにない場合、前記クラスのイベントセクションで前記属性名を検索するステップと
    を含むことを特徴とする請求項1に記載の方法。
  6. 前記タグの名前がピリオドで区切られた第1のセクションおよび第2のセクションを有している場合、
    前記タグを、前記第1のセクションはクラス名であり、前記第2のセクションはプロパティおよびイベントの一方を示す属性名である属性として識別するステップと、
    少なくとも1つの名前空間内で前記クラス名を検索するステップと、
    前記少なくとも1つの名前空間内のクラス名のプロパティセクションおよびイベントセクションの一方で前記第2のセクションを検索するステップと、
    型コンバータを呼び出して前記タグの文字列をオブジェクトに変換し、前記プロパティおよび前記イベントの一方の値を設定するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記プロパティおよび前記イベントの一方は前記プロパティであり、
    前記属性がテキスト文字列である場合、設定される前記プロパティの型コンバータを呼び出すステップと、
    前記属性が他のタグである場合、
    前記他のタグの名前に基づいて前記クラスを探すステップと、
    前記他のタグの名前に基づいて前記クラスのオブジェクトをインスタンス化するステップと、
    前記オブジェクトを前記プロパティの値として前記タグに設定するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記タグが定義タグである場合、前記タグの予め定義されている意味を使用するステップをさらに含むことを特徴とする請求項1に記載の方法。
  9. 前記タグがコードタグである場合、前記タグの予め定義されている意味を使用するステップは、プログラミングコードを解析することを含むことを特徴とする請求項8に記載の方法。
  10. 前記属性が値としてテキスト文字列を有している複合プロパティの場合、
    型コンバータを呼び出して前記テキスト文字列をオブジェクトに変換するステップと、
    前記オブジェクトを前記プロパティの値として設定するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  11. 前記属性が値としてオブジェクトを有している複合プロパティの場合、
    前記オブジェクトのインスタンスを作成するステップと、
    前記オブジェクトを前記プロパティの値として設定するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  12. 前記クラスのオブジェクトをインスタンス化するステップと、
    前記オブジェクトがIApplyValueインターフェースを実装するかどうかを調べるために前記オブジェクトに照会するステップと、
    前記オブジェクトがIApplyValueインターフェースを実装している場合、elementReferenceおよびBackgroundPropertylDを値としてObject.ApplyValueを呼び出すステップと、
    前記オブジェクトが前記IApplyValueインターフェースをサポートしていない場合、属性のプロパティを前記オブジェクトに設定するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  13. 前記クラスのオブジェクトをインスタンス化するステップと、
    前記オブジェクトがIliteralContentを実装している場合、前記テキストの解析なしに、前記オブジェクトのタグ内の内容を前記オブジェクトに渡すステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  14. 前記xmlns属性はリソースディレクトリの位置を指定するリンクを有しており、
    前記名前空間定義ファイルを前記リソースディレクトリからフェッチするステップと、
    前記名前空間定義ファイルをローカルに格納するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  15. 前記ルートタグは前記拡張可能マークアップ言語ファイルが固定形式文書を指定するファイルであることを示すタグであり、前記少なくとも1つの名前空間内のクラスを使用して固定形式文書を作成するステップをさらに含むことを特徴とする請求項1に記載の方法。
  16. 前記固定形式文書を作成するステップは、テキスト要素、ベクトル図形要素、および画像のうちの1つを有する少なくとも1つの固定ページをインスタンス化するステップを含むことを特徴とする請求項15に記載の方法。
  17. 前記ルートタグは前記拡張可能マークアップ言語ファイルが適応的フロー文書を指定するファイルであることを示すタグであり、前記少なくとも1つの名前空間内のクラスにマップされるタグを使用して適応的フロー文書を指定するステップをさらに含むことを特徴とする請求項1に記載の方法。
  18. 前記適応的フロー文書を指定するステップは、テキストサイズおよび位置決めプロパティ、列プロパティの強度、表示プロパティ、強調プロパティ、およびソースプロパティのうちの少なくとも1つに関連する属性を有するタグを指定するステップを含むことを特徴とする請求項17に記載の方法。
  19. 前記ルートタグは前記拡張可能マークアップ言語ファイルがユーザインターフェースを指定するファイルであることを示すタグであり、前記少なくとも1つの名前空間内のクラスを使用して前記ユーザインターフェースを作成するステップをさらに含むことを特徴とする請求項1に記載の方法。
  20. マークアップ言語データ構造を格納しているコンピュータ可読媒体であって、
    プログラミング言語クラスにマップされるデータを含む第1のフィールドと、
    前記クラスのプロパティおよびイベントの一方にマップされるデータを含む第2のデータフィールドと
    を含むことを特徴とするコンピュータ可読媒体。
  21. 前記第1のフィールドおよび前記第2のフィールドを解釈するために少なくとも1つのアセンブリおよび少なくとも1つの名前空間を有する定義ファイルを取り出すためのURL(uniform resource locator)を示すデータを含む第3のフィールドをさらに含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
  22. 前記第2のデータフィールドが*文字を有している場合、前記第2のデータフィールドは、前記データ構造のプロセス中に、新しくインスタンス化されたオブジェクトおよび既存の参照されるオブジェクトの一方に等しい値に設定されることを特徴とする請求項20に記載のコンピュータ可読媒体。
  23. 前記第2のデータフィールドは複合プロパティを格納しており、前記第2のデータフィールドがテキスト文字列である場合、前記第2のデータフィールドが処理されると、型コンバータが呼び出されることを特徴とする請求項20に記載のコンピュータ可読媒体。
  24. 前記第2のデータフィールドが他のタグである場合、前記第2のデータフィールドが処理されると、前記他のタグの名前に基づくクラスが探され、前記他のタグの名前に基づくクラスのオブジェクトがインスタンス化され、前記オブジェクトがプロパティの値として前記タグに設定されることを特徴とする請求項23に記載のコンピュータ可読媒体。
  25. ルートタグおよびマッピングタグの一方のxmlns属性から、少なくとも1つのアセンブリおよび少なくとも1つの名前空間を備えるリストを有する名前空間定義ファイルを決定すること、
    マークアップ言語ファイルのタグごとに
    前記タグの名前を前記少なくとも1つの名前空間内のクラスにマップすること、および
    タグが属性を有している場合、
    前記クラスに関連するプロパティおよびイベントの一方、および別のクラスに関連する別のプロパティおよび別のイベントの一方の一方に前記属性をマップすること
    を含むステップを実行する、前記ルートタグを有する拡張可能マークアップ言語ファイルからオブジェクトの階層を決定するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
  26. 前記クラスのオブジェクトをインスタンス化することを含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  27. 前記タグの名前を前記クラスにマップするステップは、前記少なくとも1つの名前空間内で前記タグの名前を検索するステップを含むことを特徴とする請求項25に記載のコンピュータ可読媒体。
  28. 前記タグの名前を前記クラスにマップするステップは、前記タグの名前を前記クラスおよび前記プロパティの一方にマップすることを含むことを特徴とする請求項25に記載のコンピュータ可読媒体。
  29. 前記属性は属性名を有し、前記クラスに関連するプロパティおよびイベントの一方に前記属性をマップするステップは、
    前記クラスのプロパティセクションで前記属性名を検索するステップと、
    前記属性名が前記クラスのプロパティセクションにない場合、前記クラスのイベントセクションで前記属性名を検索するステップと
    を含むことを特徴とする請求項25に記載のコンピュータ可読媒体。
  30. 前記タグの名前がピリオドで区切られた第1のセクションおよび第2のセクションを有している場合、
    前記タグを、前記第1のセクションはクラス名であり、前記第2のセクションはプロパティおよびイベントの一方を示す属性名である属性として識別すること、
    前記少なくとも1つの名前空間内で前記クラス名を検索すること、
    前記少なくとも1つの名前空間内の前記クラス名のプロパティセクションおよびイベントセクションの一方で前記第2のセクションを検索すること、および
    型コンバータを呼び出して前記タグの文字列をオブジェクトに変換し、前記プロパティおよび前記イベントの前記一方の値を設定すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  31. 前記プロパティおよび前記イベントの一方は前記プロパティであり、
    前記属性がテキスト文字列である場合、設定される前記プロパティの型コンバータを呼び出すこと、
    前記属性が他のタグである場合、
    前記他のタグの名前に基づいて前記クラスを探すこと、
    前記他のタグの名前に基づいて前記クラスのオブジェクトをインスタンス化すること、および
    前記オブジェクトを前記プロパティの値として前記タグに設定すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  32. 前記タグが定義タグである場合、前記タグの予め定義されている意味を使用することを含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  33. 前記タグがコードタグである場合、前記タグの予め定義されている意味を使用するステップは、プログラミングコードを解析することを含むことを特徴とする請求項32に記載のコンピュータ可読媒体。
  34. 前記属性が値としてテキスト文字列を有している複合プロパティの場合、
    型コンバータを呼び出して前記テキスト文字列をオブジェクトに変換すること、および
    前記オブジェクトを前記プロパティの値として設定すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  35. 前記属性が値としてオブジェクトを有している複合プロパティの場合、
    前記オブジェクトのインスタンスを作成すること、および
    前記オブジェクトを前記プロパティの値として設定すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  36. 前記クラスのオブジェクトをインスタンス化すること、
    前記オブジェクトがIApplyValueインターフェースを実装するかどうかを調べるために前記オブジェクトに照会すること、
    前記オブジェクトがIApplyValueインターフェースを実装している場合、elementReferenceおよびBackgroundPropertylDを値としてObject.ApplyValueを呼び出すこと、および
    前記オブジェクトが前記IApplyValueインターフェースをサポートしていない場合、属性のプロパティを前記オブジェクトに設定すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  37. 前記クラスのオブジェクトをインスタンス化すること、および
    前記オブジェクトがILiteralContentを実装している場合、前記テキストの解析なしに、前記オブジェクトのタグ内の内容を前記オブジェクトに渡すこと
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  38. 前記xmlns属性はリソースディレクトリの位置を指定するリンクを有しており、
    前記名前空間定義ファイルを前記リソースディレクトリからフェッチすること、および
    前記名前空間定義ファイルをローカルに格納すること
    を含むステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体
  39. 前記ルートタグは前記拡張可能マークアップ言語ファイルが固定形式文書を指定するファイルであることを示すタグであり、前記少なくとも1つの名前空間内のクラスを使用して固定形式文書を作成するステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  40. 前記固定形式文書を作成するステップは、テキスト要素、ベクトル図形要素、および画像のうちの1つを有する少なくとも1つの固定ページをインスタンス化するステップを含むことを特徴とする請求項39に記載のコンピュータ可読媒体。
  41. 前記ルートタグは前記拡張可能マークアップ言語ファイルが適応的フロー文書を指定するファイルであることを示すタグであり、前記少なくとも1つの名前空間内のクラスにマップされるタグを使用して適応的フロー文書を指定するステップを実行するコンピュータ実行可能命令をさらに有することを特徴とする請求項25に記載のコンピュータ可読媒体。
  42. 前記適応的フロー文書を指定するステップは、テキストサイズ、テキスト行間隔、画像サイズ、画像位置、マージン、段組間の幅、および列幅および列数のうちの少なくとも1つに関連する属性を有するタグを指定するステップを含むことを特徴とする請求項41に記載のコンピュータ可読媒体。
  43. オブジェクトを宣言的に定義するための方法であって、
    少なくとも1つの名前空間を有する定義ファイルの位置のURLをルートタグおよびマッピングタグのうちの一方のxmlns属性にマップするステップと、
    前記少なくとも1つの名前空間内のクラス名にタグ名を設定するステップと、
    前記オブジェクトがプロパティ設定を有している場合、プロパティ名に前記タグの属性を設定するステップと
    を含むことを特徴とする方法。
  44. 前記オブジェクトが定義されたイベントを有する場合、前記タグの属性をイベント名に設定するステップをさらに含むことを特徴とする請求項43に記載の方法。
  45. プログラミングコードの1つをページおよびリソースに追加する定義タグを定義するステップをさらに含むことを特徴とする請求項43に記載の方法。
  46. 前記プログラミングコードの1つを前記ページおよび前記リソースに追加する定義タグを定義するステップは、def:Code要素を設定して前記プログラミングコードを前記ページに追加することを含むことを特徴とする請求項45に記載の方法。
  47. クラスに関連付けられていない属性を追加する定義タグを定義するステップをさらに含むことを特徴とする請求項43に記載の方法。
  48. クラスに関連付けられていない属性を追加する定義タグを定義するステップは、def:Language属性をコードのコンパイルに使用する言語を指定するように設定することを含むことを特徴とする請求項47に記載の方法。
  49. ピリオドで区切られた第1のセクションおよび第2のセクションとして属性を表し、前記第1のセクションは前記プロパティおよびイベントの一方が定義される前記クラスに対応するクラス名に設定され、前記第2のセクションは前記プロパティおよび前記イベントの一方の名前に設定されるステップをさらに含むことを特徴とする請求項43に記載の方法。
JP2004567659A 2003-05-16 2003-05-16 オブジェクトの階層を定義するための宣言的(declative)機構 Pending JP2006526180A (ja)

Applications Claiming Priority (1)

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

Related Child Applications (1)

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

Publications (1)

Publication Number Publication Date
JP2006526180A true JP2006526180A (ja) 2006-11-16

Family

ID=33488770

Family Applications (1)

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

Country Status (6)

Country Link
EP (1) EP1639482A4 (ja)
JP (1) JP2006526180A (ja)
KR (1) KR101292982B1 (ja)
CN (1) CN100338595C (ja)
AU (1) AU2003248534A1 (ja)
WO (1) WO2004107195A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009147919A (ja) * 2007-12-17 2009-07-02 Internatl Business Mach Corp <Ibm> コンピュータ実施方法、コンピュータ・プログラム製品、データ処理システム(安全なデジタル署名システム)
JP2016066367A (ja) * 2011-09-10 2016-04-28 マイクロソフト テクノロジー ライセンシング,エルエルシー 柔軟性の高いメタデータの合成

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100456785C (zh) * 2006-03-21 2009-01-28 梁铁柱 用手机或小灵通发送姓名短信获取艺术签名设计的系统与方法
US8370399B2 (en) * 2006-12-04 2013-02-05 Microsoft Corporation Building, viewing, and manipulating schema sets
US8099370B2 (en) 2007-04-03 2012-01-17 Microsoft Corporation System for financial documentation conversion
US9294705B2 (en) * 2008-06-27 2016-03-22 Universal Electronics Inc. System and method for ubiquitous appliance control
CN102004722B (zh) * 2010-10-19 2013-08-21 北京红旗中文贰仟软件技术有限公司 信息文档的处理方法及装置
KR101489677B1 (ko) * 2014-02-04 2015-02-16 주식회사아이보우솔루션 웹 기반 생애 주기 관리 시스템을 구축하기 위한 동적 어플리케이션 개발 서비스 제공 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6083276A (en) 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US6366943B1 (en) * 1999-03-31 2002-04-02 Brian Martin Clinton Adder circuit with the ability to detect zero when rounding
US6516322B1 (en) * 2000-04-28 2003-02-04 Microsoft Corporation XML-based representation of mobile process calculi
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US6853997B2 (en) * 2000-06-29 2005-02-08 Infoglide Corporation System and method for sharing, mapping, transforming data between relational and hierarchical databases
US6990654B2 (en) * 2000-09-14 2006-01-24 Bea Systems, Inc. XML-based graphical user interface application development toolkit
EP1260911A1 (fr) * 2001-04-27 2002-11-27 Koninklijke Philips Electronics N.V. Structure de données interne pour application destinée à s'interfacer avec une interface pour un document de type HTML ou XML

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009147919A (ja) * 2007-12-17 2009-07-02 Internatl Business Mach Corp <Ibm> コンピュータ実施方法、コンピュータ・プログラム製品、データ処理システム(安全なデジタル署名システム)
US9363258B2 (en) 2007-12-17 2016-06-07 International Business Machines Corporation Secure digital signature system
JP2016066367A (ja) * 2011-09-10 2016-04-28 マイクロソフト テクノロジー ライセンシング,エルエルシー 柔軟性の高いメタデータの合成

Also Published As

Publication number Publication date
KR20060061733A (ko) 2006-06-08
KR101292982B1 (ko) 2013-08-02
CN100338595C (zh) 2007-09-19
EP1639482A1 (en) 2006-03-29
WO2004107195A1 (en) 2004-12-09
EP1639482A4 (en) 2009-10-28
AU2003248534A1 (en) 2005-01-21
CN1615476A (zh) 2005-05-11

Similar Documents

Publication Publication Date Title
US7331014B2 (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
US8095565B2 (en) Metadata driven user interface
US20050188350A1 (en) Data binding
US10008009B1 (en) Method for generating dynamic vector graphics
US10061575B2 (en) Managed execution environment for software application interfacing
US8413070B1 (en) Declarative resizeable list in electronic form
US20020085020A1 (en) XML-based graphical user interface application development toolkit
JP2002189595A (ja) リフレッシュ可能なWebクエリを作成するための統合された方法
US7000185B1 (en) Method and system for customization of a program
US20060265359A1 (en) Flexible data-bound user interfaces
US8458586B2 (en) X/HTML support for silverlight applications
de Moura et al. Interface Development for Hypermedia Applications in the Semantic Web.
KR101292982B1 (ko) Clr 객체의 계층 구조 결정 방법, 컴퓨터 판독가능 매체, 객체를 선언적으로 정의하는 방법, clr 객체의 계층 구조 결정 메카니즘, 및 clr 객체를 선언적으로 정의하는 장치
US20100269032A1 (en) Advanced text completion, such as for markup languages
US8225217B2 (en) Method and system for displaying information on a user interface
US20050268233A1 (en) System and method for mixed language editing
Nebeling et al. XCML: providing context-aware language extensions for the specification of multi-device web applications
JP4988797B2 (ja) オブジェクトを作成するための方法およびプログラム
Guetari XML as a dynamic UI and database access customization mean
Gibbons et al. Working with XML
WO2001093078A2 (en) Method and system for mapping between a source document and a transformation document
Ghosh et al. Application Design and Programming Model

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090424

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090724

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091110

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100115