TWI327701B - System and method for defining and using subclasses declaratively within markup - Google Patents
System and method for defining and using subclasses declaratively within markup Download PDFInfo
- Publication number
- TWI327701B TWI327701B TW092113389A TW92113389A TWI327701B TW I327701 B TWI327701 B TW I327701B TW 092113389 A TW092113389 A TW 092113389A TW 92113389 A TW92113389 A TW 92113389A TW I327701 B TWI327701 B TW I327701B
- Authority
- TW
- Taiwan
- Prior art keywords
- subcategory
- language
- definition
- combined
- computer readable
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Error Detection And Correction (AREA)
Description
1327701 義與 使用子類 九、發明說明·· 【發明所屬之技術領域】 本發明係有關於在標示文件内宣告地定 別的***和方法。 【先前技術】 現今的軟體開發工具允許軟體開發者使用< 等一種或多種相關之程式語言,以建構可執 (component)。建構可執行的組件的優點有二,| 組件可以供其它軟體程式重複使用;其二為新& 易的由已建構的组件衍生而來β 一般而言,組件由子類別擴充而來,也就 已存在的類別衍生而來。這些類別和子類別是由 中的一種撰寫而成,由這些程式語言所撰寫之 所謂的原始碼。在傳統的執行環境中,軟體開 些原始碼編譯為目的瑪(object code),接著並 的目的碼連結以產生可執行程式。然而,傳統 境(runtime environment)存在之問題為每一程式 程式語言的每一版本需要不同的執行環境。 因此,為了克服傳統執行環境的限制,係 新型態的的程式執行環境,該設計能夠有效的 傳統執行環境中所存在跨語言介面與語言版本 這個新型態的執行環境中,程式開發工具將原 中繼語§ (intermediate language) ’在程式執行 C + + , C# 行的組件 —在於該 組件可輕 新類別由 程式語言 式碼就是 工具將這 其它相關 式執行環 語言或者 計了—種 ,服上述在 〖問題。在 •碼編譯為 丨間,執行 5 1327701 環境係將中繼語言编譯為原生二元可執行碼(native binary executable code)。因此,該新型態的執行環境在程 式執行期間係執行「連結型態」程序,而為了執行「連結 型態j程序,該執行環境係讀取正執行中程式之關聯組件 的相關資訊(如:中介資料)並存取相關之IL組合語言。該 中介資料(metadata)包含型態、版本與資源等相關資源的 描述。而該 IL 組合語言為單一或多個動態連結庫 (DLL/DLLs)和其資源》 無論是傳統或新型態的程式執行環境,程式原始碼皆 是使用一種程式語言所撰寫。每一種程式語言,針對特定 的程式執行環境,都有其獨特的語法與應用程式介面(API) 組。因之,為了撰寫程式碼,軟體開發者必須學習與該特 定的執行環境相關聯的程式語言的語法與該APIs。學習程 式語法與APIs對開發者而言是非常費時與充滿挑戰的工 作。此外,假設程式開發者希望使用多種程式語言撰寫程 式或者讓相同程式在不同執行環境中執行,該程式開發者 必須能夠熟記不同執行環境的各個程式語言語法及該 APIs之異同處。 有鑒於使用組件的優點,因此有必要設計一個較佳建 構、擴充與使用組件的機制。 【發明内容】 本發明係關於在標示文件内宣告地定義、擴充與使用 子類別的系統和方法。本發明提供一種機制讓開發者以一 6 1327701 種標示語言進行建構、擴充與使用組件。這些級件包括可 重複使用的組件、應用程式使用者介面與文件使用者介面 等相關組件。該機制讓開發者不需要熟知任一種程式語 言;相反的,該機制允許開發者使用一種熟知的標示語言, 如xml(可擴充標示語言)’以建構組件。由於xml容易 學習並且為一般電腦程式社群所熟知,本發明相較於一般 程式語言提供更多的優點。第一個優點為組件可隨著其它 標示文字一起定義在標示文件中用以產生—複雜的 (sophisticated)電子文件。另一優點為開發者不需知道或了 解任何程式語言以產生一可執行组件。 本發明提供一種使可執行組合語言能夠與撰寫於標示 文件内的子類別定義所產生的子類別相關聯之***、方法與 資料結構。根據本發明,該子類別定義根據一架構而撰寫, 而該架構可為以可擴充標示語言為基礎的。該架構包含用以 定義該子類別之名稱的子類別標籤,當執行該可執行組合語 言時,則該名稱與被樣例化物件之種類相關聯。該架構更包 含一或多個指示以供’如具體指明用以編譯子類別定義的程 式語言、具體指明用以衍生子類別的父類別、具體指明當物 件被樣例化時應執行的動作、產生子類別之一事件定義與相 關之事件處理器(EventHandler),以及具體指明當物件被樣 例化時成為物件内攔位(field)之一特性,。 【實施方式】 本發明係關於在標示文件内宣告地定義、擴充與使用 7 1327701 子類別的系統和方法。本發明提供一種機制讓開發者以一 標示語言進行建構、擴充與使用組件β該機制讓開發者不 需要知道某一種程式語言;相反的,該機制允許開發者使 用某一種周知的標示語言產生組件,如可擴充標示語言 (XML)。 例示的電腦環境 第1圖所不為一代表性的電腦計算裝置,用以說明本 發明的實施。參照第1圖是一非常基本的組態典型的電 腦計算裝置包含至少—處理單元1〇2與系統記憶想 1〇4。根據明確的電腦組態與電腦計算裝置1〇❶的型態系 統記憶體104可能為揮發性記憶體,如隨機存取記憶體 (RAM)、非揮發性記憶體,如唯讀記憶體(r〇m)、快閃記 憶趙(Hash memory)等、或者為兩種類型記憶體的結合。典 型的系統記憶體104包含_ Λ | Α μ , ^ ^ ^ _ I甘一作業系統1〇5、一或多個程式 模组106、以及可包今 I 3程式資料107。程式模組106之實例 包含瀏覽器應用程式、財孩^ ^ 、 財務管理應用程式、文書處理器等
相關的程式模組。第A 乐1園中於虛線108内所包含的组件說 明此基本組態架構。
電腦計算裝置+ A υ也可能包含有其它額外的特色與功
能,舉例而言,其它可榷斗.4 A J揭式或非可播式(removable and/or non-removable)資料儲尨 竹碎存裝置’如磁片、光碟或磁帶,亦 可能包含在電腦計算劈番1ΛΛ山 升裝置100中。第1圖中以可攜式儲存 裝置109與非可攜式儲左 、傅存裝置110說明這些額外的儲存設 8 1327701 備。因此 體、可攜 的方法或 程式模組 非可搞式 存媒體包 (ROM)、 CD-ROM 式磁帶、 存媒體並 存放資訊 任何電腦 亦可包含 入裝置、 如顯示器 眾所知, 電腦 可透過網 訊連接裴 化為電腦 調制的資 有載波或 過改變其 通訊媒體 ’電腦儲存媒體可能包含揮發性與非揮發性記怜 式與非可揭式料㈣,這些媒體藉由各種不^ 技術執行資訊的儲存’%電腦指令、資料結構與 等資訊。系.统記憶體104、可摘式健存裝置Μ、 儲存裝置UG即為電腦料雜的實電腦儲 含但不限於隨機存取記憶趙(RAM)、唯讀記憶趙 EEPR〇M '快閃記憶趙或其它記愧體技術、 、數位影音光碟(DVD)或其它光學儲存裝置、卡 =帶 '磁片等其它磁性儲存設備。此外,電腦储 只限於以上所舉之例子’…住何可以用來 '、可破電腦計算moo所存取的健存媒體而 :存媒體為裝置100的一部份。電腦計算裝置⑽ 觸::置U2,如鍵盤、滑鼠、光學筆、語音輸 式輸入裝置等等;而亦可包含輸出裝置114, 因印表機等等。以上這些設備皆廣為大 因此不再贅述。 計算裝置100亦可能包含通訊連接裴置116,將 路使裝置100與其它電腦計算裝s 118通訊。通 二16是-種通訊媒想。典型的通訊媒 令、資料結構、程式模組、…他經 任何資訊發送媒趙。經調制的資料信號 疋’、 輪機制。經調制的資料信號 =將資訊…信號。舉例來說透 G有線媒體如有線網路或是直接連線,以及無 9 1327701 線媒體如聲學式媒體、鉦線雷沽、 ”.、深艰波紅外線及其他無線媒體。 本文中提到的電腦可讀媒& 脑』》買媒趙包括儲存媒體及通訊媒體兩 者0 例示的實作方式 第2圖為一功能區塊圖,概括說明當執行本發明一實 施例所發展之系統。該系統包含一標示编譯器2〇2與一刹 析器204,而該標示編譯器2〇2與剖析器2〇4可常駐在一 電腦計算裝置如第1圖的電腦計算裝f 1〇〇上的軟體模組 (如第1圖所示之程式模.組10β)。該標示編㈣2〇2輸入 -標示文彳206。在一實施例中,此標示文件為以可擴充 標示語言(XML)為基礎之文件。簡而言之,該標示文件2〇6 包含多個標籤(未示出)用來指示子類別定義的一部份如 第4圖至第6圖所示,其細節並將於以下描述之。之後亦 將詳述標籤指示子類別的存在與其相關之元件。一旦標示 編譯器202讀到這些標籤便會與剖析器2〇4通訊以建構子 類別。 在一實施例中’由剖析器204所提供之功能,可能在 標示編譯器202内提供;在另—個實施例中,由剖析器2〇4 所提供之功能’可能藉由從標示編譯器2 02内已存在的剖 析類別中衍生一剖析類別而提供《該衍生的剖析類別,可 包含根據本發明而定義之每一個子類別符記(token)(如:標 籤)之功能撤銷。簡而言之,功能撤銷可作為一系列的回叫 功能(callback function)的部分,該等回叫功能係用來傳訊 10 1327701 (signal)和子類別相關聯之元件的定義的開始與結束,如第 10圖所示並將於往後詳述之。 剖析器204用來剖析在標示文件206内的子類別定 義。簡而言之’標示编譯器202编譯標示文件206的内容。 在一實施例中’標示编譯器202將該内容轉換為符記二元 資料流(tokenized binary stream)並將之儲存在符記二元資 料檔案(tokeni zed binary file)208。熟習該項技術者將瞭解 該符記二元資料檔案2 08可為許多種形式中的一種》符記 二元資料檔案208以樹狀結構表示在標示文件206内所指 定之組件。然而,標示編譯器202可能無法直接轉換某些 内容’此内容可被傳送至剖析器204來轉換。根據本發明 之在標示文件206内定義之子類別定義即為此種型態内容 之實例。剖析器 204辨識在子類別定義中之特性、事件 等…,並且將這些有關項目之相關資訊傳遞給標示編譯器 202 « —旦收到這些相關之資訊,標示編譯器2 02將增加與 標示文件206内的子類別定義相關聯之符記(t〇ken) 標示 編譯器202亦將產生代表原始碼212 ’而由該代表原始碼 212產生IL組合語言210。IL組合語言21〇包含定義在標 示文件206内之子類別(如組件)的電腦指令。過去,係使 用一軟體開發工具來產生這些IL組合語言,該軟體開發 工具係利用一程式語言進行原始程式碼的編譯與連結。在 另一實施例中,熟習該項技術者亦將瞭解標示編課器2〇2 可在不產生符記二元資料檔案20 8的情況下產生iL組合 11 1327701 語言2l〇。 由標示编譯器202所產生之il組合語言210可以被 傳統之程式開發工具重複使用;除此之外,亦可重複使用 於其它標示語言。第7圊及其相關敘述說明如何在標示文 件内重複使用IL组合邊言21〇。因此,本發明讓組件開發 者使用標示語言輕易的建構與擴充組件。一旦根據本發明 來建構新組件,此新组件就像是使用傳統程式語言所開發 出來的,因此,程式開發者在無需學習一種或多種程式語 言的語法或了解語言間細微之差異的情況下,將可使用本 發明之機制與方法建構組件。 第3圖所示為一功能區塊圖,概括說明為執行本發明 一實施所須之執行環境。該執行環境包括一執行引擎 (runtime engine)302、一符記二元讀取器(t〇kenized binary reader)3〇4 以及一符記二元載入器(t〇kenized binary loader)306 »當執行引擎302收到載入一特殊資源(如第2 圖所示的標示文件206)的請求時,該執行引擎302將存取 分頁映射表308。該分頁映射表308將辨識該標示文件206 是否具有一已編譯版本(如符記二元檔案2❶8),如果一已 編譯版本存在,該執行引擎302將與符記二元載入器3〇6 通訊以載入符記二元檔案208。在一實施例中,符記二元 標案208將辨識與它有關的il組合語言(如il組合語言 210)’隨後符s己—元載入器306開始下載被辨識的il組合 語言210。一旦部份或全部的符記二元檔案2〇8及其相關 的IL組合浯言210載入完成,該符記二元讀取器3〇4開始 12 1327701 讀取符記二元檔案208及IL組合語言210以產生在處理器 (如第1圖所示之處理單元102)上可執行的原生指令。此 外,該符記二元讀取器304可存取中介資料(metadata)310 以判斷型態、方法與事件之資訊。一般而言,中介資料310 包含關於方法、攔位、特性與事件的資訊,而這些項目可 能都有屬於自己的中介資料以供讀取更詳細的資訊。因 此,使用中介資料310,符記二元讀取器304在執行期間 使用反射(reflection)用以程序性的判別在符記二元檔案 2 0 8内相關元件的資訊。除此之外,原本在標示文件 206 所定義之子類別,可使用根據本發明所產生之IL組合語言 210直接執行,往後將詳述細節。 第4圖到第6圖說明一系列在標示文件206内重要的 標示部分,說明根據本發明之實施例用以宣告定義子類別 之示範性語法。第1 0圖係示範性原始碼列表,以供圖示說 明該標示編譯器202可根據標示重要部分(第4圖到第6 圖所示)而產生的代表性原始碼。在實施例中,當開發者設 定偵錯旗幟,標示編譯器2 02可實際產生一含有代表性原 始碼的檔案。該檔案内有代表性原始碼,因此讓開發者可 以判斷在標示文件206内文或標示編譯器202内可能之問 題。另一個實施例中,該代表性原始碼也許並不存放在檔 案中。在這個實施例中,標示編譯器202可在有或沒有事 先產生的代表性原始碼的情況下,產生符記二元檔案 208 與IL組合語言210。 综觀而言,第4圖到第6圖逐步說明如何根據本發明 13 1327701 在標示文件内宣告地定義一子類別之不同態樣。第4圖所 示為一定義子類別與子類別階層的示範性語法;第5圖所 示為定義子類別之辨識器、程式碼與建構者的示範性語 法;而第6圖所示為定義子類別特性與事件的示範性語 法》以下將詳述各圖示的細節。 第4圖所示為一定義子類別與子類別階層的示範性語 法。標示400重要的部分(如子類別定義)包括一父類別標 籤402(如“Button”)。以下所述每個標籤(如父類別標籤402) 都有相對應的結束標籤:不過,為了方便,結束標籤不一 定明確地以書寫描述’但會在相關圖式中說明。標示400, 包括名稱空間屬性404、定義名稱空間的宣告406、以及 數個編譯器指示(如指示408和410)。名稱空間屬性404, 辨識名稱空間(如“System.Control”)及父類別(如“Button”) 所在之組合語言。定義名稱空間的宣告406,指示任何在 有“def:”字首的標示400内的屬性係代表編譯器需執行哪 些動作的指示。 舉例而言’指示408(以下稱語言指示408),指定編 譯器去使用指定給語言指示408的程式語言(如C#)來產生 IL组合語言,而語言指示408可具有被指定的不同數量的 程式語言之任一種語言,如 C、C + +等相關的程式語言。 指示410 (以下為def:Class指示410 )指定編譯器去使用 指派給def:Class指示410的名稱414(如MyButton)來定義 子類別。def:Class hint 410可能包含一子類別名稱空間 412以用來辨識其中新的子類別關聯的名稱空間(如 14 1327701 “MyControlLib”)。因此,在第4圊申,程式開發者宣告定 義一個名為“MyButton”的新子類別,其擴充位於 “System.Control”名稱空間的“Button”類別;而該新的子類 別將與“MyControlLib”的名稱空間相關聯。 第4圊所示的標示 400中,定義一元件宣告標藏 420(如“Image”)》由於在元件宣告標籤420中沒有定義特 定之名稱空間,因此該名稱空間屬性404亦定義了與元件 宣告標籤420相關聯的元件(如“Image”)的位置。該元 件宣告標籤420包含一元件421與一來源屬性422 ;而來 源屬性422包含一特性424 (如“Source”)及一數值426 (如 “HappyFace.jpg”)。由於元件宣告標籤420係在定義為 “MyButton”的子類別之子類別定義中,因此當子類別被樣 例化時與元件宣告標籤420相關的元件亦將被樣例化。除 此之外,與元件宣告標籤420相關的元件包含在新的子類 別的子收集之中;亦即該子類別為和元件宣告標籤420相 關元件的母體(parent)。因此’熟知此技術的人將知道標 示400允許開發者以一階層方式表現而使編譯器產生元件 樹狀圖,其係根源於已定義的子類別(如“MyBotton,,;)。 第5圖所示為定義子類別之辨識器、程式瑪與建構者 的示範性語法。標示500重要的部分除包含上述標示4〇〇 外,亦包含定義子類別之辨識器、程式碼與建構者的標示。 為了閲讀上的清晰,定義在第4圖的參考符號,除非有助 於解釋新的概念,其參考符號將不在第5圖中顯示。在第 5圊_,元件宣告標籤420更包含其它屬性,如i(J屬性S2〇 15 1327701 與事件屬性526。id屬性520包含id特性521(如“ID”)及 id數值523(如“imgl”)。Id屬性520說明一根據本發明而 定義子類別之辨識器的示範性機制。 該事件屬性 526 包括_事件觸發器 527(如 “DataLoaded”)與一事件數值 529 (如 “OnLoaded”)。事件觸 發器527說明其受監控之事件,而事件數值529說明當事 件觸發器527發生時所執行之方法。該事件數值529與一 方法530(如“OnLoaded”功能)相關聯,而方法530可使用 一程式語言撰寫。方法530可參照定義在標示500的類別 或子類別之實例。因之,當方法53 0在標示文件内使用一 程式語言撰寫,方法530將與一程式碼指示540相關聯; 而該程式碼指示540允許該開發者增加片段的程式碼於子 類別定義之中。在一實施例中,該程式碼跟隨程式碼指示 540且為一可呼叫之方法或事件處理器。舉例而言,在標 示500中,Onloaded功能530視為由Image控制所啟動之 DataLoaded事件的事件處理器。子類別定義主體可再加入 其它程式碼片斷,如第5圖所示之Customlnit功能550。 標示500亦包括建構者指示542,該建構者指示542 允許開發者撰寫補充的建構者,用以補充在子類別所產生 的預設建構者·»在一實施例中,預設的建構者最後才執行 補充的建構者,而該補充建構者所包含的程式碼將影響子 類別進行建構時的行為。開發者可呼叫在補充建構者内的 父類別的建構者》第 5圊所示補充建構者名之為 Customlnit功能 550為使用者所定義的專用方法。 16 1327701 第6圖所不為定義子類別特性與事件的示範性語法。 標不600内重要的部分除包括上述標示400與標示500 外’亦包含疋義特性與類別的標示。》了閱讀上的清晰, 疋義在第4圖與第5圖的組件符號,除非有助於解釋新的 概念,其組件符號將不在第6圖中顯示。 標不600包含特性指示610可於子類別t定義特性 (property),而該特性可作為子類別的構件變數。該特性指 示610可包含一或多個屬性,如名稱屬性612、型態屬性 614、預設數值屬性616與旗標屬性618。該名稱屬性612 具體指明特性的名稱,在一實施例中,名稱有大小寫之 分,且執行引擎並不限定使用名稱已使用的字元,但該名 稱對於該名稱的擁有者為獨有的。該型態屬性614具體指 明該特性數值的型態,此型態包含内含的(intrinsic)、使 用者定義的(user-defined)、結構(struct)、(class)、介面 (interface)、數字(enum),等等…。預設數值屬性616具體 才a明當特性被樣例化時所指定的數值◊該旗標屬性61 8具 體指明當特性被樣例化時,包裝(wrapper)所產生的方法型 態。該旗標具有控制特性特質之能力,如Read〇nly、 Inheritable to child elements、Private,等等 。 標示600亦包括事件指示620,該事件指示62〇允許 在子類別中定義事件。該事件指示620包括多個属性,如 名稱屬性622、路由屬性624、旗幟屬性626,等等…。名 稱屬性622具體指明關聯該事件的字串,當_ χπ^棺案使 用該子類別,該xml檔案將使用此字串以咐加適當的應用 17 1327701 程式開發者所定義的程 於樹狀結構中啟動事件 說明其它與事件有關的 式瑪。路由屬性624具體指明判別 之组件的方法。旗幟屬性626具體 特性,舉例而言,在標示600中, 標示編譯器將產生啟動_ 及包含與該事件相關的資 有關資訊。熟知此技術的 疇下’進行屬性相關名稱 標不600亦包含一事 事件呼叫 DblClick的程式碼以 訊’如支援路由、旗標、…等等 開發者將可在不脫離本發明的範 與數值的修改。 件處理器宣告630。事件處理器 旦〇 630匕含相關的事件處理器修改han(jier modifier) 632,如公共的/專用的、代表、返回型態等等…。 在第6圖中,事件處理器宣告63 0宣告一事件處理器(亦 即方法)(如“DblClickEventHandler”),當相關的事件發生 時,該事件處理器將被呼叫。 標示文件内亦定義其它的標籤。舉例而言,根標籤(如 “def: Library ”)可用於通知編譯器及/或剖析器於另外的樓 案之中定義子類別、在同一檔案中定義以其它子類別定義 該子類別等等。一名稱空間可被宣告來定義一個訂製的組 件、所有在根標籤下定義的類別,等等…。 第7圖所示為在標示文件内重要的部分’並說明使用 於標示文件内的子類別之示範性語法。標示700包含一根 元件702(如Fi〇wPanel元件)、一預設名稱空間宣告704、 定義名稱空間前置字串706與一元件7〇8。元件7〇8可參 照根據以上語法所建構之客制化元件。該預設名稱空間宣 告說明標籤之預設名稱空間而不需要前置字串。在舉 18 1327701 例的標示 700之中,預設名稱空間宣告 704指 “System.Controls”名稱空間。該定義名稱空間前置 706具體指明客制化元件與元件所存在的位置。在舉 標示 700之中,定義名稱空間前置字串 706指 “MyControlLib”》該元件 708 包含一類別名稱 710 “MyControlLib”)、一辨識器712與文字字串714。該 名稱71 0指得是針對該元件而樣例化的類別,而該辨 712指得是該元件且包含一名稱(如“ID”)與一數右 “button 1”)。在程式執行期間,該數值成為類別名稱 實例的名稱(如“button 1”)。 例示的實作方式之一般操作流程 第8圖為一邏輯流程圖,主要根據本發明之實施 概括說明進行編譯宣告定義子類別之處理流程。第8 示之流程800將根據第4圖至第6圖所示之示範性之 並配合第 10圖所示之代表原始碼以進行解說。當比 10圖與標示600後會立即清楚的發現,本發明可以宣 的方式產生複雜的子類別,開發者無須了解其使用之 語言,如第10圖中之代表原始碼為C#之原始碼。然 根據本發明所指之標示編譯器將可根據任何一種程式 之語法產生代表性程式碼。 區塊801為流程800的起始區塊,在此區塊中, 編譯器正編譯一標示文件並遭遇具有子類別定義之標 該標示編譯器將透過以下機制來判斷是否讀到一子類 的是 字串 例的 的是 (如 類別 識器 ί (如 710 例, 圖所 標示 較第 告性 程式 而, 語言 標示 示。 別定 19 1327701 義 別 中 子 實 類 子 方 區 所 名 訊 生 圖 被 類 別 中 義 白 重 性 如’該標示有無法辨識的格式或者是辨識到— *織(如def:CUSS)等等相關方式。舉例而言,在標示^ 书不編譯器在處理過數個敘述句後,才遇到用來 *§ X,» ^ „ 辦識 疋義之子類別標籤(如def:Class指示41〇)。在其它 施例中,子類別可能在許多敘述句之前就出現,例如子 別没有具體指明一基礎類別時(如button)。一般而言, 類別標籤可能出現在標示内組件標籤會出現的任何地 。—旦標示被辨識為具有子類別定義,處理程序將進入 塊8〇2内。 在區塊802 t,將開始處理子類別標籤。根據第4圖 描述’該子類別標籤(也就是def:CUSS指示410)指定— 稱414,並且可包含一子類別名稱空間412。根據此資 ’第10圖第一行所示之代表程式碼可能為組合語言而產 。除此之外,擁有指定名稱的類別亦將被產生,如第10 第5行所示。當其它額外敘述(如名稱空間與父類別)已 處理,第5行的將以其他產生的程式碼擴充。在處理子 別標籤部分,該流程將辨識該子類別是否擴充自任何類 (即父類別)並得到該關聯父類別的相關資訊。在第4圖 ,‘‘MyBotton”子類別的產生擴充自父類別標籤402所定 “Button”。因之,第10圖第5行所示為MyBotton擴充 Botton的代表性程式碼。 除此之外,子類別所預設之建構者也將被產生。再次 申,一旦處理額外的敘述,該預設建構者可以額外代表 程式碼擴充,如第10圖第23行至第24行與第26行所 20 1327701 示對應所產生的代表性程式碼。然 而,”this._Initialize —This()”函式將在其它以下將介紹之敘 述被處理完後加入。子類別標籤一旦被處理,處理程序將 進入區塊804。 在區塊804中,將擷取出下一個在標示中的敘述。下 一敘述,可能出現在子類別標籤之前或之後的敘述,其出 現的位置端看子類別標籤敘述在子類別定義内出現的位 置。一旦下一個敘述被擷取,處理程序將進入決策區塊 806 ° 在決策區塊 806中,主要判斷該敘述是否定義一類 別。就如之前曾提到,本發明允許宣告性的表示階層架構。 在一實施例中,定義該子類別之子的另一類別(如元件)的 敘述將在子類別標蕺之後發生。在此,假設目前的敘述並 沒有定義一類別,處理程序將進入區塊808。 在區塊808中,該敘述將被處理。在子類別定義中, 將會有各種型態的敘述,它們並不依照一定的順序出現。 每種型態敘述的處理方式將於以下詳述之。一般而言,當 每一個敘述被處理後,將在子類別定義中產生額外的代表 性程式碼。一旦這些敘述之一在區塊808被處理,處理程 序將進入決策區塊810。 在決策區塊810中,主要判斷在子類別中是否還有任 何敘述要被處理。假設還有其他必須處理的敘述’處理迴 路將回到804與808之間的區塊處理該敘述。一旦在子類 別定義内的所有敘述處理完畢,處理程序繼續由決策區塊 21 1327701 810進入區塊812。 區塊812中,由以上程序所產生的代表性程式 用來產生子類別定義的IL組合語言。程式開發者可 生代表性程式碼時已經在某一編譯指示敘述中(區 指定程式語言,可能指定哪一個組合語言檔案用來 類別定義等等...。一旦一或多個IL組合語言產生後 流程便完成。如同之前曾經提及的,上述產生的組 將可使用傳統的程式語言來執行或使用根據本發明 標示敘述等等。而該組合語言就像是用一程式語言 成。 回到決策區塊 806,假設該敘述開始一新類別 (如組件),處理程序將進入區塊814。在區塊814 有屬於新類別的敘述將使用在區塊 808内的方式 理,直到所有屬於新類別的敘述被處理完畢。舉例 在第5圖中,於新類別“Image”的敘述520、526與 被處理,之後,Image成為子類別“MyButton”的一 序區塊804繼續執行與該子類別有關的處理敘述。 接著,再回到區塊 808,描述處理每一種可能 子類別的敌述之個別型態(如區塊820-832所示)》 820中,編譯指示的敘述將被處理。一般而言,這 為編譯指示用以提供標示編譯器關於如何產生組合 相關資訊。舉例而言,在第4圖中’語言指示408 指示敘述,用來通知當產生代表性程式碼時,標示 應該使用之程式語言。在第4圖中,語言指示408 瑪將被 能當產 塊 820 ) 儲存子 .,處理 合語言 撰寫而 的定義 中,所 進行處 而言, 422將 子。程 出現在 在區塊 些敘述 語言的 為編譯 編譯器 指定語
22 1327701 §两 , 因 扣,第10圊所 碼 式碼為C#原始程 在區塊822中,將處理有關定義 些名稱空間將6 Α . 稱空間的敘述。這 η將包含於代表性程式碼中 第3行所示Q ’如第10圖第2行與 在區塊,將處理定義 述。對於任何在@一 ^ ^ ^ 頰別之辨識器(id)的敘 Ί〗在標示文件内的id屬性 相關類別的糊位檨+ ,該標示編譯器產生 位構件有其型態,該蜇 態與疋義id屬性的類別相同,並且 m β id μ μ櫚位構件的名稱即疋 才曰派給ld屬性的id數值。舉例而士 备 』而s ,在第5圖中,當開 始處理Image類制敘料,㈣到id屬性m因此, 如第1〇圖第7行所示,標示編譯器將產生MyB〇tt〇n類別 的代表性程式碼,而其具有一棚位構件定義為: private System. Control. Image imgl; 在程式執行期間’該攔位構件將被起始為
InitComponent()方法產生的相對應型態(如 image)的實 例。因此’任何在MyBotton類別的程式瑪可以透過類別 id數值存取在階層架構中的元件實例》起始的欄位構件如 第10圖第37行所示。 在區塊826中,有關定義類別特性的敘述將被處理。 標示編譯器將產生所有定義在標示文件内特性的代表原始 碼,並且註冊該特性β舉例而言’第6圖中,標示600包 23 1327701 含特性指巾610 ’該特性指示61〇冑612618所示多種 同的屬fi。該特性指示61〇用以通知標示编譯器其特性 不610之後的敘述為關於特性的敘述接著屬 將被讀取為特性敘述。該標示編譯器將產生” Labei,,特性 代表程式碼以註冊為MyB〇tt〇n類別的屬性,如第圖 9仃至第12行所示。該標示編譯器亦將產生定義該特性 代表性程式碼’如第10圖第28行至第30行所示。第 行至第30行說明名稱屬性612如何成為於代表性程式碼 特性之名稱,並說明型態屬性614如何成為於代表性程 碼中特性之型態。 在 實施例中’該流程藉由呼叫特性型 TypeC〇nverter產生特性數值的程式碼,其利用反 (reflection)執行程式碼並且轉換字串成為該特性類別的 件實體。於另一實施例中,為了得到實際的物件數值流 800將呼叫特性的型態轉換器並且將數值轉換 InstanceDescriptor 物件。該 InstanceDescript〇r 物件包 充分的資訊,使付標示編譯器能夠反射該物件以產生代 性程式碼,而該代表性程式碼將產生與特性指示相關屬 所指定的數值型態的新實例。在第10圖第28行至30行 說明在程式執行期間,當Label特性有指派數值情況下 LabelProperty如何在設定於MyBotton實例之中。該指 數值可能以宣告形式於標示中指定(如第7圖所示)或 使用任何程式邊吕程式指定0 在區塊828中,將處理定義類別事件的敎述。標示 不 指 性 的 第 的 28 中 式 態 射 物 程 為 含 表 性 中 定 者 編 24 1327701 譯器將根據事件敘述產生該事件的代表程式碼。事件可能 使用不同機制於標示中定義’如第5圖所示之事件屬性526 與第6圓所示之事件指示620。首先,該機制使用的事件 屬性如下所描述,事件屬性包含事件觸發器與事件值。當 事件觸發器發生時’事件相關的事件觸發器及與方法相關 的事件值將開始啟動執行。當定義“this〇nL〇ad,,為新的 System.Controls.DataLoadedEventHandler 時,第 5 圖中的事件值 529(“〇nL〇aded”)將以事件處理器增加至代表程式碼,如第 10圖第38行至40行所示。藉由定義AddHandler的第一個 參數為 System.Controls.Image.DataLoadedEvent,事件觸發器 527(“DataLoacied”)將增加為第10圖第38行代表程式瑀的 事件。AddHandler的其它參數可能使用預設值或已經在標 示文件内具體指明。 以下將描述使用事件指示620的機制。事件指示620 包含一事件名稱屬性與其它屬性,而指派給事件名稱屬性 的名稱被註冊為該事件。舉例而言,參考第 6圖所示, “DblClick”為指派給事件名稱屬性的名稱;因此, “DblClick”為 RegisterEvent方法的第一個參數,如第10 圖第14行至第16行所示。而屬於方法“DblClickEventHdlr” 之事件處理器宣告630的型態亦將包含為 RegisterEvent 方法的一個參數,如第10圖所示。再者’ RegisterEvent 方法的其它參數可能使用預設的參數值,亦可能為在標示 文件中具體指明的其它屬性。根據實施例所示,在程式執 行期間,該事件將被連結使用反射以辨識 25 1327701
DblClickEventHandler型態並配置該方法。 於區塊830中,定義程式碼的敘述將被處理。定義程 式碼的敘述跟隨一編譯器指示敘述(區塊820),如程式碼 指示。這些敘述以一程式語言撰寫並以代表性程式碼顯 不。舉例而言’第5圖說明方法530與Customlnite功能 550。方法530與Customlnite功能550分別顯示在第1〇 圖第18行至第19行與第21行》 在區塊832中’定義輔助性建構者的敘述將被處理。 重複之前所言,定義輔助性建構者的敘述將跟隨編譯器指 示敘述(區塊820),如建構者指示。標示編譯器將產生一 輔助性建構者(“this._Initialize_This()’,於第10圖中)並且 在輔助性建構者内增加敘述。舉例而言,第5圖中在建構 者指示542之後的敘述稱之為“CustomInit(),’。因此,標示 編譯器増加“CustomInit(),,於代表性原始碼之辅助性建構 者中’如第10圖第33行所示。 在不脫離本發明的範疇之下,熟知此技術的人將知 道’當執行區塊804至810期間,區塊812可能以漸增方 式運作執行》除此之外,根據剖析器2〇4與標示编譯器2〇2 的功能性實施,處理流程800期間也許有回叫在剖析器204 與標示編譯器202之間。 第9圈為一邏輯流程圊,概括說明根據本發明之實施 例使用户 任標示文件十的子類別宣告之一執行程序900。第7 圖所不的示範性標示將與第9圊搭配描述流程900。區塊 9 01 Jit 'ώ 巧现程900的起始區塊;在區塊901中,執行引擎將 26 Γ327701 接收特殊資源(如標示文件)的請求並且判定該特殊資源存 在一編譯版本。舉例而言,假設第7圖中標示700事先並 沒有被編譯為符記二元檔案,因此,當標示編譯器讀到元 件708,該標示編譯器將判斷該MyBotton類別具有相關的 符記二元稽案與IL組合語言。包含MyBotton類別的符記 屬性值之相關符記二元檔案將於流程900中被處理。相關 的符記二元檔案與IL組合語言將根據本發明產生,而處理 程序將進入區塊902。 在區塊902中,符記二元檔案被載入,該符記二元檔 案可一次完整載入也可能以漸增方式被載入。符記二元檔 案可辨識與需要被載入的符記二元檔案相關的IL組合語 言。參考第7圖所示,例如與Mybotton類別相關的IL組 合語言被載入,而處理程序進入區塊904。 在區塊 904 中,由符記二元檔案中擷取一符記 (token)。如前所述,在新的執行環境中,所產生的符記二 元檔案與用於產生該符記二元檔案之程式語言的關係是獨 立的。因此,執行引擎將可在不需要知道原來產生該符記 二元檔案的程式語言情況下處理該符記二元檔案。處理程 序繼續進入決策區塊906。 在決策區塊906中,將判別所擷取的符記(token)是否 為一事件,若該符記不為一事件,處理程序進入區塊908。 在區塊908中,該符記(token)將被處理。如同之前所 述,符記(token)的處理並不需依賴符記二元檔案的產生方 式。換句話說,不論由標示文件宣告所產生的符記二元檔 27 1327701 案之符記或使用程式語言所產生的符記,該符記處理皆使 用相同方式。由於對於熟知此技術的開發者皆知道的符記 二元檔案内處理符記(token)方式,在此不再贅述處理方 式。處理程序進入決策區塊910。 在區塊910中,將判斷在符記二元檔案中是否還有更 多符記(token)。假設還有其它符記(token),處理迴路將回 到904並且依照之前所說的方式處理;反之,如果沒有其 它的符記(token),則處理流程完成並進入結束區塊。 回到決策區塊906,若該符記(token)為一事件,處理 程序繼續進入區塊912。在區塊912中,與符記二元檔案 關聯的中介資料(metadata)被載入。該中介資料包含型態、 資源、方法等相關描述;接著,處理程序繼續進入區塊914。 在區塊914中,處理程序使用中介資料與反射發現事 件之目標元·件型態。該程序包括存取中介資料並且檢視每 一攔位以判別型態;接著,處理程序進入區塊91 6。 在區塊916中,目標元件型態的事件被驗證;如此可 確保該事件為一有效事件。假設對目標元件型態而言該事 件不為一有效的事件,則發生錯誤。處理程序進入區塊 918 ° 在區塊918中,反射被用於目標元件型態用來得到事 件方法,然後執行該事件方法,而執行該事件方法包括在 關聯的IL組合語言内的執行程式碼。因之,參照第7圖 所示,一旦 MyBotton被樣例化後,將找到該事件,並將 附加該事件方法(“DblClickEvent”)。亦即一事件處理器(如 28 1327701
DblClickEventHandler)被附加於該事件(如 DblClick)。處 理程序將進入決策區塊 910並且依照之前所述之方式處 理。 因此,本發明提供一種在標示文件中宣告地定義子類 別與使用該子類別的機制。該機制讓開發者專注在更多組 件的使用方式而不是擔心如何在任何一種程式語言中執行 組件。
根據上述的說明書,我們以實例與資料提供完整製造 與使用本發明的描述。本發明之諸多實施例可在不脫離本 發明精神與範圍下完成,本發明之範圍依隨附之申請專利 範圍而定。 【圖式簡單說明】 第1圖所示為一示範計算裝置,用以說明本發明的實 施。 第2圖所示為一功能區塊圖,概括說明執行本發明一 實施例所須之組件。 Φ 第3圖所示為一功能區塊圖,概括說明為執行本發明 一實施所須之執行環境。 . 第4圖到第6圖根據本發明說明一系列在標示文件内 重要的部分,該標示文件以示範性語法說明宣告地定義子 類別。 第7圖所示為在標示文件内重要的部分,並以示範性 語法說明如何使用於標示文件内的可執行組件。 29 1327701 第8圖為一邏輯流程圖,主要根據本發明之實施例, 概括說明進行編譯宣告定義子類別所需之處理流程。 第9圖為一邏輯流程圖,根據本發明之實施例慨括說 明一執行期間的程序,使用在標示文件中宣告的子類別。 第10圖所列為示範性原始碼,為標示编譯器(如第2 圖所示)根據標示文件(第4圖到第6圖所示)而產生代表性 原始碼。
【元件代表符號簡單說明】 100 電 腦 計 算 裝 置 102 處 理 單 元 104 系 統 記 憶 體 105 作 業 系 統 106 程 式 模 組 107 程 式 資 料 108 構 成 電 腦 基 本 組 態之 組件 109 可 攜 式 儲 存 裝 置 110 非 可 攜 式 儲 存 裝 置 1 12 輸 入 裝 置 114 輸 出 裝 置 116 通 訊 連 接 裝 置 118 其 它 電 腦 計 算 裝 置 202 標 示 編 譯 器 204 剖 析 器 206 標 示 文 件 208 符 記 二 元 資 料 檔 案 210 IL 組 合 語 言 212 代 表 原 始 碼 302 執 行 引 擎 304 符 記 二 元 讀 取 器 306 符 記 二 元 載 入 器 308 分 頁 映 射 表 3 10 中 介 資 料 400 標 示 402 父 類 別 標 籤 404 名 稱 空 間 屬 性 406 定 義 名 稱 空 間 的宣告 30 1327701 408 編 譯 器 指 示 410 編 譯 器 指 示 412 子 類 別 名 稱 空 間 414 名 稱 420 元 件 官 告 標 籤 42 1 元 件 422 來 源 屬 性 424 屬 性 426 屬 性 數 值 520 id 屬 性 521 id 特 性 523 id 數 值 526 事 件 屬 性 527 事 件 觸 發 器 529 事 件 數 值 530 方 法 540 程 式 碼 指 示 542 建 構 者 指 示 550 輔 助 性 建 構 者 610 特 性 指 示 612 名 稱 屬 性 614 型 態 屬 性 616 預 設 屬 性 618 旗 年示 屬 性 620 事 件 指 示 622 名 稱 屬 性 624 路 由 屬 性 626 旗 幟 屬 性 630 事 件 處 理 器 官 告 632 事 件 處 理 器 修 改 702 根 元 件 704 預 設 名 稱 空 間 宣告 706 名 稱 空 間 前 置 字串 708 元 件 710 類 別 名 稱 712 辨 識 器 714 文 字 字 串 801 -917 流 程 區 塊 1000 代表性程式原始碼
31
Claims (1)
1327701 i月糾日修正本丨 申請專利範圍 1. 一種具有由一電腦可讀取資料結構所編碼的一明確組 件(tangible component)之電腦可讀取媒體,該資料結構包 含: 一架構(schema),用於在一標示文件内宣告性地定義一 子類別定義;該架構能夠被編譯至一可執行組合語言 (executab丨e assembly)内,該可執行組合語言係依據該組合 語言的執行來樣例化(instantiate)—與定義於該子類定義 内的子類別相關聯的物件;其中該可執行組合語言係獨立 於原本被用以產生該組合語言之程式語言,使得該可執行 組合語言係無須考慮該程式語言即可被編譯。 2. 如申請專利範圍第1項所述之電腦可讀取媒體,其中該 架構為一種以可擴充標示語言(XML)為基礎的架構。 3. 如申請專利範圍第1項所述之電腦可讀取媒體,其中該 架構包含用於定義一名稱的子類別標籤,該名稱與該成為 樣例化之物件的型態相關聯。 4. 如申請專利範圍第1項所述之電腦可讀取媒體,其中該 架構包含一語言指示器,以供具體指明當编譯該子類別定 義時所使用的程式語言。 5. 如申請專利範圍第4項所述之電腦可讀取媒體,其中該 32 1327701 架構進一步包含一程式碼指示器,以供描述該標示文件内 之程式碼,且該程式碼係直接被編譯至該可執行組合語言 内。 6. 如申請專利範圍第5項所述之電腦可讀取媒體,其中該 程式碼,係直接根據該語言指示器所具體指明的程式語言 的語法而被編譯。 7. 如申請專利範圍第1項所述之電腦可讀取媒體,其中該 架構包含一父類別標籤,以供具體指明衍生該子類別的父 類別。 8. 如申請專利範圍第7項所述之電腦可讀取媒體,其中該 架構包含一父類別名稱空間(name space)屬性,以供具趙 指明該父類別所存在之名稱空間。 9. 如申請專利範圍第1項所述之電腦可讀取媒體,其中該 架構包含一子類別標籤,以供具體指明該子類別。 10. 如申請專利範圍第1項所述之電腦可讀取媒體,其中 該架構包含一建構者指示器,以供具體指明當樣例化該物 件時,應執行之一或多種辅助性動作。 11. 如申請專利範圍第1項所述之電腦可讀取媒體,其中 33 1327701 該架構包含一事件指示器,以供具體指明一事件與一對應 事件處理器,當樣例化時其係與該物件相關聯。 12.如申請專利範圍第1項所述之電腦可讀取媒體,其中 該架構包含一特性指示器,以供具體指明一特性,當該物 件被樣例化時該特性係成為該物件内的構件。 13.如申請專利範圍第1項所述之電腦可讀取媒體,其中 該架構包含一元件(element)宣告,以供具體指明該子類別 的子元件。 1 4 · 一種具有一明確組件之電腦可讀取媒體,該明確組件 包含用以產生子類別之可執行組合語言的指令,該等指令 包含: 辨識一標示文件(markup document)内之一子類別定 義,該子類別定義係定義一子類別:及 根據該子類別定義來產生一組合語言,該組合語言係可 執行以產生與該子類別相關聯之一物件之實例 (instance);其中該產生的组合語言係獨立於原本被用以產 生該組合語言之程式語言,使得該產生的組合語言係無須 相關於該程式語言即可被執行。 15.如申請專利範圍第14項所述之電腦可讀取媒體,其中 辨識該子類別定義,係包含剖析一子類別標籤,該子類別 34 1327701 標蕺包含用以定義一名稱之子類別名稱屬性,該名稱與成 為該樣例化之物件的型態相關聯。 16. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含將該子類別 定義加以編譯至代表性原始碼内,該代表性原始碼係被編 譯至該組合語言内。 17. 如申請專利範圍第16項所述之電腦可讀取媒體,其中 該代表性原始碼係根據一程式語言。 18. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含將在該子類 別定義内的程式碼編譯至該組合語言内,而該程式碼係藉 由一程式碼指示器在子類別定義内加以描述。 19. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含:剖析一用 以定義一父類別之父類別標籤,該子類別係由該父類別所 衍生;利用與一程式語言相關聯的語法來具體指明一繼 承;以及,將該語法編譯為該組合語言的一部份。 20. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含剖析一用以 35 1327701 定義至少一輔助性動作之建構者指示器,該輔助性動作係 在該物件被樣例化時被執行,該輔助性動作係該組合語言 的一部份。 21. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,包含剖析一事件指 示器,該事件指示器係產生該子類別之一事件定義與一對 應事件處理器。 22. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含剖析一用以 定義一特性之特性指示器;當該物件被樣例化時,該特性 係成為該物件内的構件。 23. 如申請專利範圍第14項所述之電腦可讀取媒體,其中 根據該子類別定義來產生一組合語言,係包含剖析一元件 宣告標籤,該元件宣告標籤係辨識該子類別之一子元件。 24. —種產生一可執行組合語言的電腦實施方法,該方法 係至少部分藉由一計算裝置來加以實行,該方法包含: 辨識於一標示文件内之一子類別定義,該子類別定義係 定意一子類別;及 根據該子類別定義來產生一組合語言,該組合語言係可 執行以產生與該子類別相關聯之一物件之實例,其中該產 36 1327701 生的組合語言係獨立於原本被用以產生該組合語言之程 語言,使得該產生的組合語言係無須考慮該程式語言即 被執行。 25.如申請專利範圍第24項所述之電腦實施方法,其中 識該子類別定義,係包含剖析一子類別標籤,該子類別 籤包含用以定義一名稱之子類別名稱屬性,該名稱與成 樣例化之物件的型態相關聯。 2 6.如申請專利範圍第24項所述之電腦實施方法,其中 據該子類別定義來產生一組合語言,係包含··剖析一用 定義一父類別之父類別標籤,該子類別係由該父類別所 生;使用依據一程式語言的語法來具體指明一繼承;以石 將該語法编譯為該組合語言的一部份。 27. 如申請專利範圍第24項所述之電腦實施方法,其中 據該子類別定義來產生一組合語言,係包含剖析一用以 義至少一輔助性動作之建構者指示器,該輔助性動作係 該物件被樣例化時被執行,該輔助性動作係該組合語言 一部份51 28. 如申請專利範圍第24項所述之電腦實施方法,其中 據該子類別來定義產生一组合語言,係包含剖析一事件 示器,該事件指示器係用來產生該子類別之一事件定義 式 可 辨 標 為 根 以 衍 根 定 在 的 根 指 與 37 Γ327701 一對應事件處理器。 2 9.如申請專利範圍第24項所述之電腦實施方法,其中上 述之根據該子類別定義來產生一組合語言,係包含剖析一 用來定義一特性之特性指示器;當該物件被樣例化時,該 特性係成為物件内的構件。 30. —種用於由一標示文件之子類別定義而產生一組合語 言之電腦系統,該電腦系統包含: 一處理器;及 一記憶體,該記憶體係配置複數個被載入該記憶體中的 電腦可執行指令, 其中,該處理器係執行該等電腦可執行指令,以供: 辨識一標示文件内之一子類別定義,該子類別定 義係定義一子類別:及 根據該子類別定義來產生一組合語言,該組合語 言係可執行以產生與該子類別相關聯之一杨件之實 例,其中該產生的組合語言係獨立於原本被用以產 生該組合語言之程式語言,使得該產生的組合語言 係無須考慮該程式語言即可被執行。 31. 如申請專利範圍第30項所述之電腦系統,其中辨識該 子類別定義,係包含剖析一子類別標籤,該子類別標籤包 含用以定義一名稱之子類別名稱屬性,該名稱與成為樣例 38 1327701 化之該物件的型態相關聯。 32.申請專利範圍第30項所述之電腦系統,其中根據該子 類別定義來產生一組合語言,係包含剖析一用以定義至少 一輔助性動作之建構者指示器,該輔助性動作係在該物件 被樣例化時被執行,該輔助性動作係該組合語言的一部份。
33.如申請專利範圍第30項所述之電腦系統,其中根據該 子類別定義來產生一組合語言,係包含剖析一事件指示 器,該事件指示器係用來產生該子類別之一事件定義與一 對應事件處理器。 34.如申請專利範圍第30項所述之電腦系統,其中根據該 子類別定義來產生一組合語言,係包含剖析一用來定義一 特性之特性指示;當該物件被樣例化時,該特性係成為物 件内的構件。
3 5 · —種產生一可執行組合語言的系統,該系統包含: 一用以辨識一標示文件内之一子類別定義的機構,該子 類別定義係定義一子類別;及 一用以根據該子類別定義來產生一組合語言的機構,該 組合語言係可執行以產生與該子類別相關聯之一物件之實 例,其中該產生的组合語言係獨立於原本被用以產生該組 合語言之程式語言,使得該產生的組合語言係無須考慮該 39 1327701 程式語言即可被執行。 36. 如申請專利範圍第35項所述之系統,其中用以辨 子類別定義的機構,係包含剖析一子類別標籤的機構 子類別標籤包含用以定義一名稱之子類別名稱屬性, 稱與成為樣例化之該物件的型態相關聯。 37. 如申請專利範圍第35項所述之系統,其中用以根 子類別定義來產生一組合語言的機構,係包含剖析一 定義一父類別之父類別標籤的機構,該子類別係由該 別所衍生;使用依據一程式語言的語法來具體指明一 的機構;以及,將該語法編譯為該組合語言的一部份 構。 38. 如申請專利範圍第35項所述之系統,其中根據該 別定義來產生一組合語言的機構,係包含一剖析用以 至少一輔助性動作之一建構者指示器的機構,該輔助 作係在物件被樣例化時被執行,該輔助性動係該組合 的一部份。 識該 ,該 該名 據該 用以 父類 繼承 的機 子類 定義 性動 語言 40
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/377,313 US7120618B2 (en) | 2003-02-28 | 2003-02-28 | System and method for defining and using subclasses declaratively within markup |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200416569A TW200416569A (en) | 2004-09-01 |
TWI327701B true TWI327701B (en) | 2010-07-21 |
Family
ID=23488596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW092113389A TWI327701B (en) | 2003-02-28 | 2003-05-16 | System and method for defining and using subclasses declaratively within markup |
Country Status (15)
Country | Link |
---|---|
US (1) | US7120618B2 (zh) |
EP (1) | EP1452962B1 (zh) |
JP (1) | JP4806158B2 (zh) |
KR (2) | KR100889671B1 (zh) |
CN (1) | CN100454244C (zh) |
AU (1) | AU2003204197B2 (zh) |
BR (1) | BR0301738A (zh) |
CA (1) | CA2428558C (zh) |
HK (1) | HK1066616A1 (zh) |
MX (1) | MXPA03004411A (zh) |
MY (1) | MY136473A (zh) |
NO (1) | NO329240B1 (zh) |
RU (1) | RU2347269C2 (zh) |
TW (1) | TWI327701B (zh) |
ZA (1) | ZA200303680B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725884B2 (en) * | 2003-02-28 | 2010-05-25 | Microsoft Corporation | System and method for compiling markup files |
US7418659B2 (en) * | 2003-02-28 | 2008-08-26 | Microsoft Corporation | System and method for declaring a resource within a markup document |
US7890928B2 (en) * | 2003-07-26 | 2011-02-15 | Pilla Gurumurty Patrudu | Mechanism and system for representing and processing rules |
US20050154978A1 (en) * | 2004-01-09 | 2005-07-14 | International Business Machines Corporation | Programmatic creation and access of XML documents |
US20070136658A1 (en) * | 2005-11-29 | 2007-06-14 | International Business Machines Corporation | Handling events in a descriptive context |
US9128727B2 (en) * | 2006-08-09 | 2015-09-08 | Microsoft Technology Licensing, Llc | Generation of managed assemblies for networks |
US8380742B2 (en) * | 2006-10-10 | 2013-02-19 | Microsoft Corporation | Integration of database reporting with ERP systems |
US7765241B2 (en) * | 2007-04-20 | 2010-07-27 | Microsoft Corporation | Describing expected entity relationships in a model |
US8880564B2 (en) * | 2007-10-11 | 2014-11-04 | Microsoft Corporation | Generic model editing framework |
US7530060B1 (en) * | 2008-01-08 | 2009-05-05 | International Business Machines Corporation | Methods and computer program product for optimizing binaries with coding style formalization |
US9584877B2 (en) * | 2011-06-16 | 2017-02-28 | Microsoft Technology Licensing, Llc | Light-weight validation of native images |
US9015661B1 (en) * | 2011-06-23 | 2015-04-21 | The Mathworks, Inc. | Restricting class inheritance relationships |
US9158505B2 (en) * | 2014-01-09 | 2015-10-13 | Microsoft Technology Licensing, Llc | Specifying compiled language code in line with markup language code |
US20240111555A1 (en) * | 2022-10-04 | 2024-04-04 | International Business Machines Corporation | Unknown object sub-class identification |
Family Cites Families (12)
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 |
US6342907B1 (en) | 1998-10-19 | 2002-01-29 | International Business Machines Corporation | Specification language for defining user interface panels that are platform-independent |
US6427228B1 (en) * | 1999-05-12 | 2002-07-30 | International Business Machines Corporation | Combining a meta data file and java source code to dynamically create java classes and javabeans |
US6732330B1 (en) * | 1999-09-30 | 2004-05-04 | International Business Machines Corporation | Scripting language blocks to support multiple scripting languages in a single web page |
GB0011426D0 (en) * | 2000-05-11 | 2000-06-28 | Charteris Limited | A method for transforming documents written in different XML-based languages |
US6941510B1 (en) * | 2000-06-06 | 2005-09-06 | Groove Networks, Inc. | Method and apparatus for efficient management of XML documents |
US6957394B1 (en) * | 2000-12-01 | 2005-10-18 | Microsoft Corporation | Rendering controls of a web page according to a theme |
US20020091818A1 (en) * | 2001-01-05 | 2002-07-11 | International Business Machines Corporation | Technique and tools for high-level rule-based customizable data extraction |
KR20020061888A (ko) * | 2001-01-18 | 2002-07-25 | 박철만 | 엑스엠엘 응용프로그램의 개발방법 |
US20030037311A1 (en) * | 2001-08-09 | 2003-02-20 | Busfield John David | Method and apparatus utilizing computer scripting languages in multimedia deployment platforms |
US20040064826A1 (en) * | 2002-09-30 | 2004-04-01 | Timothy Lim | Method and system for object system interoperability |
US20040064825A1 (en) * | 2002-09-30 | 2004-04-01 | Timothy Lim | Method and system for object system interoperability |
-
2003
- 2003-02-28 US US10/377,313 patent/US7120618B2/en not_active Expired - Fee Related
- 2003-05-13 CA CA2428558A patent/CA2428558C/en not_active Expired - Fee Related
- 2003-05-13 ZA ZA200303680A patent/ZA200303680B/xx unknown
- 2003-05-13 MY MYPI20031785A patent/MY136473A/en unknown
- 2003-05-14 AU AU2003204197A patent/AU2003204197B2/en not_active Ceased
- 2003-05-16 TW TW092113389A patent/TWI327701B/zh not_active IP Right Cessation
- 2003-05-16 BR BR0301738-9A patent/BR0301738A/pt not_active IP Right Cessation
- 2003-05-16 RU RU2003114535/09A patent/RU2347269C2/ru not_active IP Right Cessation
- 2003-05-16 NO NO20032232A patent/NO329240B1/no not_active IP Right Cessation
- 2003-05-17 KR KR1020030031428A patent/KR100889671B1/ko not_active IP Right Cessation
- 2003-05-19 CN CNB03136764XA patent/CN100454244C/zh not_active Expired - Fee Related
- 2003-05-19 EP EP03011353.4A patent/EP1452962B1/en not_active Expired - Lifetime
- 2003-05-19 JP JP2003141202A patent/JP4806158B2/ja not_active Expired - Fee Related
- 2003-05-19 MX MXPA03004411A patent/MXPA03004411A/es active IP Right Grant
-
2004
- 2004-12-02 HK HK04109550.9A patent/HK1066616A1/xx not_active IP Right Cessation
-
2009
- 2009-02-05 KR KR1020090009463A patent/KR100942322B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
MY136473A (en) | 2008-10-31 |
US7120618B2 (en) | 2006-10-10 |
CN100454244C (zh) | 2009-01-21 |
ZA200303680B (en) | 2004-08-13 |
CA2428558C (en) | 2013-01-22 |
KR100942322B1 (ko) | 2010-02-12 |
EP1452962B1 (en) | 2018-01-24 |
AU2003204197A1 (en) | 2004-09-16 |
AU2003204197B2 (en) | 2009-10-01 |
US20040172617A1 (en) | 2004-09-02 |
EP1452962A2 (en) | 2004-09-01 |
JP4806158B2 (ja) | 2011-11-02 |
NO20032232L (no) | 2004-08-30 |
KR100889671B1 (ko) | 2009-03-19 |
EP1452962A3 (en) | 2007-01-10 |
HK1066616A1 (en) | 2005-03-24 |
MXPA03004411A (es) | 2005-08-26 |
NO20032232D0 (no) | 2003-05-16 |
CA2428558A1 (en) | 2004-08-28 |
RU2347269C2 (ru) | 2009-02-20 |
NO329240B1 (no) | 2010-09-20 |
KR20090024229A (ko) | 2009-03-06 |
CN1525317A (zh) | 2004-09-01 |
BR0301738A (pt) | 2004-10-26 |
KR20040077410A (ko) | 2004-09-04 |
TW200416569A (en) | 2004-09-01 |
JP2004265371A (ja) | 2004-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106919434B (zh) | 一种代码生成方法及装置 | |
KR100942322B1 (ko) | 마크업 내부에서 명시적으로 서브클래스를 정의하고 이용하는 시스템 및 방법 | |
US9268539B2 (en) | User interface component | |
US6453464B1 (en) | Method and apparatus for converting COBOL to Java | |
KR101354803B1 (ko) | 유형 추론 및 유형 지향 후기 바인딩 | |
US9471282B2 (en) | System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component | |
US7418659B2 (en) | System and method for declaring a resource within a markup document | |
Monnier et al. | Evolution of emacs lisp | |
US20220222065A1 (en) | System and method of computer-assisted computer programming | |
Lang et al. | Package ‘xml’ | |
US11537366B1 (en) | User interface creation system | |
Phanouriou | User interface markup language (uiml) draft specification | |
Marr et al. | Execution vs. Parse-Based Language Servers: Tradeoffs and Opportunities for Language-Agnostic Tooling for Dynamic Languages | |
Marr et al. | Execution vs. Parse-Based Language Servers | |
Kiniry et al. | Improving the PVS user interface | |
Robinson | Expert. NET 1.1 Programming | |
Dubauskaite et al. | Tool support for checking consistency of UML model | |
Śmiałek et al. | Defining RSL | |
Helms et al. | User Interface Markup Language (UIML) Version 4.0 | |
Kingston | Prospectus for Nonpareil | |
Blacoe | Design and Implementation of an HPSG Model Checker using Polyadic Dynamic Logics | |
JP2005258561A (ja) | ソフトウェアの仕様書作成装置、仕様書作成方法及び仕様書作成プログラム | |
JP2009230294A (ja) | プログラムの開発支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |