專利名稱:用于網(wǎng)絡(luò)撰寫協(xié)助的工具的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于網(wǎng)頁撰寫協(xié)助的工具,且具體地說,涉及一種自動產(chǎn)生網(wǎng)頁的顯示格式碼的工具。
背景技術(shù):
隨著全球信息網(wǎng)(WWW)的日益風(fēng)行,網(wǎng)頁的迅速設(shè)計(jì)與產(chǎn)生逐漸變?yōu)楸匾>W(wǎng)頁需要迅速受到產(chǎn)生,但必須維持復(fù)雜度與靈活性。存在一些用于網(wǎng)頁撰寫的工具,以通過基于輸入?yún)?shù)自動產(chǎn)生標(biāo)記碼,例如超文本標(biāo)記語言(HTML),來協(xié)助網(wǎng)頁的產(chǎn)生。標(biāo)記碼承載關(guān)于如何展現(xiàn)及顯示標(biāo)記碼所標(biāo)識的數(shù)據(jù)的指令。這些工具允許網(wǎng)頁的內(nèi)容受到更改,且無需整個網(wǎng)頁的重新產(chǎn)生。這通常是通過下列方式來達(dá)成分別存儲變化的內(nèi)容與網(wǎng)頁,且在標(biāo)記碼中包含引用變化的內(nèi)容的位置的標(biāo)簽。該網(wǎng)頁接著可根據(jù)控制來受到處理,其中該控制由通過為分別存儲的變化內(nèi)容的所產(chǎn)生及包含的標(biāo)簽與標(biāo)記來指定。
微軟提供ActiveX設(shè)計(jì)時間控制(DTCs),其中DTC可插入標(biāo)記碼文件且在運(yùn)行時間之前,在網(wǎng)頁的設(shè)計(jì)期間受到處理,請參看美國專利6,025,119。但是,DTC處理受限于產(chǎn)生標(biāo)記碼文件的編輯器,且編輯器通常位于撰寫客戶端。通過分離撰寫與處理,從而處理無需發(fā)生于客戶端的指定編輯器,許多操作可更有效率地受到執(zhí)行。
DTC是以標(biāo)記碼批注為基礎(chǔ),其中這些批注被用于包含這些控制。不幸的是,標(biāo)記碼批注無法在彼此中嵌套,因而限制DTC在網(wǎng)頁布局產(chǎn)生方面的使用。即,網(wǎng)頁布局無法通過使用DTC與嵌入其它DTC于該DTC來加以控制。若要提供網(wǎng)頁布局功能,一分離工具必須連同這些DTC一起受到使用。
這些DTC的缺點(diǎn)是它們的使用受限于微軟平臺。另一方面,JavaServerPages(JSP)標(biāo)簽庫(taglib)提供類似的功能,但是因?yàn)樗鼈兪且訨ava語言為基礎(chǔ),所以它們不受限于任何特定平臺。但是,標(biāo)簽庫只在請求期間受到執(zhí)行,使得標(biāo)簽庫處理器必須是網(wǎng)絡(luò)應(yīng)用服務(wù)器的一部份。另外,因?yàn)闃?biāo)簽庫產(chǎn)生動態(tài)內(nèi)容,所以服務(wù)器處理負(fù)載會增加。
發(fā)明內(nèi)容
本發(fā)明提高了一種為服務(wù)器上多個文件自動生成顯示格式化的方法,如權(quán)利要求1所述。本發(fā)明提供了相應(yīng)的服務(wù)器系統(tǒng),如權(quán)利要求9所述,以及計(jì)算機(jī)程序產(chǎn)品,如權(quán)利要求10所述。
本發(fā)明允許在顯示格式化碼的各個階段為網(wǎng)頁生成該顯示格式化碼,并提供了一種用于網(wǎng)頁撰寫協(xié)助的方法,該方法可以被用于網(wǎng)頁布局。
這就允許將網(wǎng)頁的內(nèi)容源碼與網(wǎng)頁分離,并提供響應(yīng)于源碼變更的迅速并且自動的網(wǎng)頁更新。本發(fā)明的控制可以互相嵌套,這就允許更容易地生成復(fù)雜的網(wǎng)頁。
下文將參照附圖來描述本發(fā)明,其中圖1是描繪根據(jù)本發(fā)明的實(shí)例的計(jì)算環(huán)境的示意圖;圖2是描繪一種方法的流程圖,且該方法從內(nèi)容源碼自動產(chǎn)生標(biāo)記碼來協(xié)助網(wǎng)絡(luò)撰寫;圖3是更詳細(xì)地描繪產(chǎn)生圖2的標(biāo)記碼的步驟的流程圖;圖4是描繪一種系統(tǒng)的系統(tǒng)圖,該系統(tǒng)從內(nèi)容源碼自動產(chǎn)生標(biāo)記碼來協(xié)助網(wǎng)絡(luò)撰寫;且圖5是描繪圖4的WAC處理器的系統(tǒng)架構(gòu)圖。
具體實(shí)施例方式
圖1與相關(guān)的說明表示可實(shí)現(xiàn)本發(fā)明的適當(dāng)計(jì)算環(huán)境的范例。雖然本發(fā)明的實(shí)施例是通過運(yùn)行于個人計(jì)算機(jī)的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令的般環(huán)境來說明,但是本發(fā)明也可與其它程序模塊起受到實(shí)現(xiàn)。
通常,程序模塊包含執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類型的例程,程序,組件,數(shù)據(jù)結(jié)構(gòu)等。另外,本發(fā)明也可利用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)現(xiàn),其中包含手持式裝置,多處理器系統(tǒng),微處理器型或可程序設(shè)計(jì)型消費(fèi)電子產(chǎn)品,小型計(jì)算機(jī),大型計(jì)算機(jī),與分布式計(jì)算環(huán)境,其中程序模塊可位于本地與遠(yuǎn)程的存儲器存儲裝置。
請參看圖1,本發(fā)明可在現(xiàn)有個人計(jì)算機(jī)200形式的通用計(jì)算裝置中實(shí)現(xiàn),其中包含處理單元210,系統(tǒng)存儲器220,與系統(tǒng)總線230,且系統(tǒng)總線230耦接各種系統(tǒng)組件,其中包含系統(tǒng)存儲器200至處理單元210。系統(tǒng)存儲器200包含只讀存儲器(ROM)240與隨機(jī)存取存儲器(RAM)250。
基本輸入/輸出系統(tǒng)260(BIOS)存儲于ROM240,其中包含基本例程以協(xié)助個人計(jì)算機(jī)200內(nèi)的各種組件間的信息轉(zhuǎn)移(例如在啟動期間)。個人計(jì)算機(jī)200進(jìn)一步包含硬盤驅(qū)動器270,以讀取及寫入硬盤(未展示);軟盤驅(qū)動器280,以讀取或?qū)懭肟梢苿榆洷P290;與光驅(qū)291,以讀取或?qū)懭肟梢苿庸獗P292,例如CD ROM或其它光學(xué)媒體,其中所有前述組件皆通過對應(yīng)接口292,293,294連接至系統(tǒng)總線230。這些驅(qū)動器以及與它們關(guān)聯(lián)的計(jì)算機(jī)可讀媒體提供個人計(jì)算機(jī)200的計(jì)算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊與其它數(shù)據(jù)的非易失性存儲。雖然本文所述的示范環(huán)境運(yùn)用特定盤,但本領(lǐng)域技術(shù)人員應(yīng)可理解,用以存儲數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀媒體也可受到使用。
許多程序模塊可存儲于盤片290,292,ROM240或RAM250,其中包含操作系統(tǒng)295,一或更多應(yīng)用程序296,其它程序模塊297,與程序數(shù)據(jù)298。命令與信息可經(jīng)由輸入裝置(例如鍵盤201,指向裝置202,麥克風(fēng),搖桿等)輸入至個人計(jì)算機(jī)200。這些輸入裝置可經(jīng)由串行端口接口206,并列端口,游戲端口或通用串行總線(USB),來連接至處理單元210。顯示器207或其它類型的顯示裝置也可經(jīng)由接口,例如視頻轉(zhuǎn)接器208,連接至系統(tǒng)總線230。
個人計(jì)算機(jī)200可運(yùn)用邏輯連結(jié)來運(yùn)行于網(wǎng)絡(luò)環(huán)境,其中這些邏輯連結(jié)通往一或更多遠(yuǎn)程計(jì)算機(jī)209,例如另一個人計(jì)算機(jī),服務(wù)器,路由器,網(wǎng)絡(luò)PC,對等裝置或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn)。圖1所描繪的邏輯連結(jié)包含局域網(wǎng)絡(luò)(LAN) 212與廣域網(wǎng)絡(luò)(WAN)213。此種網(wǎng)絡(luò)環(huán)境常見于辦公室,企業(yè)級計(jì)算機(jī)網(wǎng)絡(luò),內(nèi)部網(wǎng)絡(luò)與因特網(wǎng)。
當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境時,個人計(jì)算機(jī)200經(jīng)由網(wǎng)絡(luò)接口或轉(zhuǎn)接器214連接至局域網(wǎng)絡(luò)212。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境時,個人計(jì)算機(jī)200通常包含經(jīng)由串行端口接口206連接至系統(tǒng)總線230的調(diào)制解調(diào)器215,或其它裝置,以建立通過廣域網(wǎng)絡(luò)213(例如因特網(wǎng))的通信。本發(fā)明的運(yùn)行可分散于二計(jì)算機(jī)200、209之間,以致一計(jì)算機(jī)充當(dāng)服務(wù)器且另一計(jì)算機(jī)充當(dāng)客戶端(請參看圖4)。每一計(jì)算機(jī)200,209(客戶端與服務(wù)器)的本發(fā)明的運(yùn)行可存儲于每一計(jì)算機(jī)200,209的RAM250,以作為應(yīng)用程序296,其它程序模塊297,或存儲于盤片270,280,291中的某個盤。應(yīng)可理解所展示的網(wǎng)絡(luò)連結(jié)是作為示范的,且在諸計(jì)算機(jī)間建立通信連結(jié)的其它裝置也可受到使用。
圖2是描繪一種方法10的流程圖,且該方法從內(nèi)容源碼自動產(chǎn)生標(biāo)記碼來協(xié)助網(wǎng)絡(luò)撰寫。標(biāo)記碼這個術(shù)語意謂用于網(wǎng)頁的格式化與顯示的任何碼,且可與顯示格式化指令這個術(shù)語互換使用。標(biāo)記碼可利用些標(biāo)記語言來撰寫,例如HTML,Java Server Pages(JSP),Active Server Pages(ASP),ExtensibleMarkup Language(XML)等。復(fù)雜的網(wǎng)頁可通過方法10來產(chǎn)生,且方法10基于簡單的輸入?yún)?shù)來自動產(chǎn)生標(biāo)記碼。方法10提供一種方式以包含可與網(wǎng)頁分離的源碼內(nèi)容在該網(wǎng)頁的對應(yīng)碼中引用這些內(nèi)容源碼,且在顯示執(zhí)行之前處理該碼。
第一標(biāo)記碼集合產(chǎn)生于步驟12,以充當(dāng)網(wǎng)頁的基礎(chǔ)。網(wǎng)絡(luò)撰寫控制(WAC)標(biāo)簽包含于此第一標(biāo)記碼集合,且該標(biāo)簽在步驟14插入于該碼。WAC定義下列操作格式化內(nèi)容源碼以供顯示,及可選地插入格式化的內(nèi)容源碼于網(wǎng)頁。WAC標(biāo)簽指定如何將在標(biāo)簽中所引用的內(nèi)容源碼格式化,并插入第一標(biāo)記碼集合。在標(biāo)簽中所引用的內(nèi)容源碼是項(xiàng)目的一部份,其中該項(xiàng)目包含相關(guān)的文件與第一標(biāo)記碼集合所屬的資源。通過設(shè)定WAC標(biāo)簽中的輸入?yún)?shù)值且接著執(zhí)行處理器,WAC標(biāo)簽所引用的內(nèi)容源碼的標(biāo)記碼受到產(chǎn)生。WAC的執(zhí)行產(chǎn)生類似于參數(shù)化宏的結(jié)果。
例如,導(dǎo)航控件可通過下列方式增加至網(wǎng)站的所有網(wǎng)頁產(chǎn)生網(wǎng)站地圖資源與WAC,以讀取網(wǎng)站地圖與產(chǎn)生及插入這些導(dǎo)航控件于每一個別網(wǎng)頁。即,通過插入針對導(dǎo)航控件內(nèi)容的WAC標(biāo)簽于網(wǎng)頁,這些導(dǎo)航控件的標(biāo)記碼可自動受到產(chǎn)生及增加至該網(wǎng)頁。此種結(jié)果以前通常是通過拷貝與黏貼動作來達(dá)成,以增加已存在于標(biāo)記碼的這些導(dǎo)航控件至每一個別網(wǎng)頁。
作為另一范例,對于數(shù)據(jù)庫表的每一記錄的網(wǎng)頁顯示與連接至這些記錄的索引網(wǎng)頁,WAC可用以簡化產(chǎn)生每一記錄與索引網(wǎng)頁的標(biāo)記碼的過程。具有索引與記錄的網(wǎng)頁可通過使用對WAC來產(chǎn)生,其中一WAC針對索引且另一WAC針對這些記錄。這些WAC的標(biāo)簽可包含于用以顯示索引與記錄的網(wǎng)頁。
WAC輸入?yún)?shù)的值是在步驟16設(shè)定于WAC標(biāo)簽。第一標(biāo)記碼集合的產(chǎn)生,WAC標(biāo)簽的插入與參數(shù)值設(shè)定(步驟12至16)皆可利用標(biāo)準(zhǔn)的標(biāo)記碼編輯器來執(zhí)行。
第二標(biāo)記碼集合是在步驟18從WAC標(biāo)簽所引用的內(nèi)容源碼來產(chǎn)生。WAC定義此產(chǎn)生過程如何讀取內(nèi)容源碼,與如何格式化內(nèi)容源碼成為標(biāo)記碼。
網(wǎng)頁撰寫的生命周期具有一套被定義的上下文環(huán)境,其中包含產(chǎn)生,存儲,編輯,預(yù)覽,簽入與公布,且簽入與公布階段可能發(fā)生于撰寫服務(wù)器。生命周期的這些階段可作為觸發(fā)點(diǎn)以啟始WAC的執(zhí)行,且此執(zhí)行可能發(fā)生于撰寫服務(wù)器。例如,當(dāng)項(xiàng)目中的一個文件改變及被簽入時,此改變所影響的所有文件可受到再處理以包含這些改變。這允許要使用的靜態(tài)內(nèi)容可輕易受到改變,以允許WAC可在網(wǎng)頁的生命的任一點(diǎn)受到處理。使用靜態(tài)內(nèi)容可降低服務(wù)器處理負(fù)載,且允許網(wǎng)頁受到搜尋引擎的索引。
處理WAC以產(chǎn)生標(biāo)記碼可發(fā)生于網(wǎng)頁的生命周期的各個階段。因?yàn)楫?dāng)輸入?yún)?shù),資源或整個內(nèi)容源碼受到改變時,網(wǎng)頁可受到再處理,所以這簡化了網(wǎng)頁的維護(hù)。在導(dǎo)航控件的前述范例中,當(dāng)網(wǎng)站地圖改變時,包含引用這些導(dǎo)航控件源碼的WAC標(biāo)簽的網(wǎng)頁可受到再處理,且無需每一個別網(wǎng)頁受到手動更改。
在步驟20,從內(nèi)容源碼所產(chǎn)生的第二標(biāo)記碼集合被包含于第一標(biāo)記碼集合??蛇x地,第二標(biāo)記碼集合可被包含于分離的輸出文件。在步驟22這結(jié)合的標(biāo)記碼集合受到存儲。在步驟24,一旦收到檢索與顯示的請求,則這結(jié)合的標(biāo)記碼傳送至請求者。
可選地,在包含于第一標(biāo)記碼集合之前,第二標(biāo)記碼集合可受到編輯。此時用戶所做的任何改變或增加皆標(biāo)示成為由用戶所產(chǎn)生。
圖3是更詳細(xì)地描繪圖2的產(chǎn)生標(biāo)記碼18的步驟的流程圖。在步驟30WAC處理器讀取第一標(biāo)記碼集合,且在步驟32定位此碼的所有WAC標(biāo)簽。從第一標(biāo)記碼集合的所有WAC標(biāo)簽形成樹結(jié)構(gòu)。WAC的定位與該樹的形成可根據(jù)已知的技術(shù)來執(zhí)行。例如,利用Java與XML來實(shí)現(xiàn)的WAC可根據(jù)文件對象模型(DOM)標(biāo)準(zhǔn)來形成樹。此樹充當(dāng)?shù)谝粯?biāo)記碼集合的映射,以設(shè)定所有需要處理的WAC及它們在第一標(biāo)記碼集合中的發(fā)生順序。對于WAC標(biāo)簽可受到嵌入的情形,該樹允許這些WAC的深度優(yōu)先順序處理,且保留WAC處理的結(jié)果的相對位置。
在步驟34特定WAC標(biāo)簽的參數(shù)輸入傳送至WAC處理器,且接著在步驟36,WAC受到執(zhí)行。當(dāng)多個WAC位于單獨(dú)一個第一標(biāo)記碼集合時,則針對每一個別WAC,步驟34與36受到重復(fù)。當(dāng)所有WAC皆受到執(zhí)行時,則在步驟20,處理的結(jié)果包含于第一標(biāo)記碼集合。
圖4是描繪一種系統(tǒng)50的系統(tǒng)圖,其中系統(tǒng)50從內(nèi)容源碼68自動產(chǎn)生標(biāo)記碼來協(xié)助網(wǎng)絡(luò)撰寫。描繪的系統(tǒng)50使用客戶端54與服務(wù)器52,其中網(wǎng)頁的撰寫發(fā)生于客戶端54,且WAC的執(zhí)行發(fā)生于服務(wù)器52。
客戶端54包含標(biāo)準(zhǔn)的標(biāo)記語言編輯器62。編輯器62是用于第一標(biāo)記碼集合64的產(chǎn)生。第一標(biāo)記碼集合64形成網(wǎng)頁的基礎(chǔ)。在第一標(biāo)記碼集合64內(nèi),存在WAC的標(biāo)簽66,以指定第一標(biāo)記碼集合64以外的內(nèi)容源碼68。內(nèi)容源碼68與第一標(biāo)記碼集合64可為較大項(xiàng)目的一部份。顯示于標(biāo)簽66的WAC指定如何處理內(nèi)容源碼68,及將其可選地包含于第一標(biāo)記碼集合64。
客戶端54可包含其它開發(fā)工具,例如,用以控制項(xiàng)目的資源的項(xiàng)目管理器,與用以處理這些資源的建造處理器。客戶端54也可包含源碼控制系統(tǒng),以存儲這些項(xiàng)目資源的各種版本,與控制對于這些資源的并發(fā)存取。
服務(wù)器52包含存儲庫,以存儲內(nèi)容源碼68與第一標(biāo)記碼集合64所屬的項(xiàng)目的所有文件。此存儲庫,即網(wǎng)頁存儲裝置58,接收來自一或多個客戶端54的相關(guān)于該項(xiàng)目的文件。如果多個客戶端54共享此數(shù)據(jù),則存儲裝置58可包含文件控制機(jī)制,以將文件的編輯能力局限于一次一個客戶端54。這些文件,例如第一標(biāo)記碼集合64,在產(chǎn)生之后,連同來自客戶端54的相關(guān)文件(亦即內(nèi)容源碼58),存儲于網(wǎng)頁存儲裝置58。服務(wù)器52也包含公布請求處理器60,以滿足用于觀看存儲于存儲裝置58的網(wǎng)頁的請求。
服務(wù)器52具有WAC處理器56,以根據(jù)存儲于WAC定義存儲裝置70的WAC定義來處理存儲裝置58的文件的WAC標(biāo)簽。文件的WAC標(biāo)簽包含針對WAC標(biāo)識符或名稱的引用,以及參數(shù),以提供數(shù)據(jù)給WAC來控制處理。當(dāng)項(xiàng)目文件受到更新時,WAC處理器56可由客戶端54的建造處理器來啟動。
存儲于WAC定義存儲裝置70的每一WAC定義具有三部分標(biāo)識符72,參數(shù)74與控制動作76。當(dāng)從存儲于服務(wù)器52以供處理的第一標(biāo)記碼集合64讀取WAC標(biāo)簽時,WAC標(biāo)識符與參數(shù)被存儲成為分離的元素,以供在WAC的執(zhí)行時使用。標(biāo)識符72是針對某類型的WAC的獨(dú)特標(biāo)識符。參數(shù)74包含基本格式化信息,且可包含對于其它WAC的引用??刂苿幼?6根據(jù)參數(shù)74所提供的信息來產(chǎn)生標(biāo)記??刂苿幼?6所產(chǎn)生的標(biāo)記是字符序列,且這些字符序列插入于WAC標(biāo)簽66所引用的文件,即內(nèi)容源碼68。此字符序列顯示如何連同第一標(biāo)記碼集合64的顯示一起顯示內(nèi)容源碼68。即,控制動作76翻譯內(nèi)容源碼68成為第一標(biāo)記碼集合64的標(biāo)記語言,例如HTML,以致該二標(biāo)記碼集合可受到無接縫的顯示,或包含內(nèi)容源碼68于第一標(biāo)記碼集合64。
控制動作76通過展現(xiàn)協(xié)助設(shè)定參數(shù)74的界面來簡化網(wǎng)絡(luò)撰寫??蛻舳艘粋?cè)54的編輯器62可包含,例如,通過標(biāo)識符72借助屬性表單對于WAC的引用,以及可選的定制屬性編輯器??刂苿幼?4可用以自動化繁復(fù)任務(wù),例如增加行號至列表,或使得用戶無需能夠撰寫復(fù)雜的HTML或Javascripts。
圖5是描繪圖4的WAC處理器56的系統(tǒng)架構(gòu)圖。WAC處理器56接受一些參數(shù),其中這些參數(shù)指定要受到處理且要包含到含第一標(biāo)記碼集合64的文件中的文件。WAC處理器56還接收一些參數(shù),其中這些參數(shù)相關(guān)于第一標(biāo)記碼集合64的生命周期階段與其它處理選擇,例如是否在輸出之前,第一標(biāo)記碼集合64應(yīng)受到更新或移除WAC標(biāo)簽。
WAC處理器56的文件讀取器80從當(dāng)前項(xiàng)目讀取第一標(biāo)記碼集合64。當(dāng)包含第一標(biāo)記碼集合64的文件受到讀取時,文件讀取器80傳送該讀取文件至文件分析器82,在文件分析器82中從該讀取文件的內(nèi)容來形成樹結(jié)構(gòu)。
文件更新器84更新解析的文件的WAC。文件更新器84的執(zhí)行可通過使用輸入?yún)?shù)來抑制。當(dāng)文件已受到更新,但WAC標(biāo)簽必須在公布之前受到移去時,這很有用。文件更新器84遍歷該樹且執(zhí)行該樹所標(biāo)示的每一WAC。每一執(zhí)行的WAC產(chǎn)生可包含額外WAC的標(biāo)記碼,且這些額外的WAC變?yōu)樵摌涞囊徊糠旨笆艿綀?zhí)行。依照深度優(yōu)先順序遍歷該樹一次,其中該順序?qū)?yīng)于文件的這些WAC的順序。文件更新器84還從第一標(biāo)記碼集合64抽取WAC標(biāo)簽,且暫時存儲來自每一標(biāo)簽的這些WAC標(biāo)識符與參數(shù)。
文件更新器84的控制加載器90取得暫時存儲的WAC標(biāo)識符??刂萍虞d器90在WAC定義存儲裝置70的WAC定義中搜尋,以尋找具有與當(dāng)前被保留的標(biāo)識符72相同的標(biāo)識符的WAC定義。一旦發(fā)現(xiàn)匹配的標(biāo)識符,則控制加載器90產(chǎn)生該WAC定義的實(shí)例。這些WAC實(shí)例可放入緩沖池并被復(fù)用以改善效能。
控制執(zhí)行器92取得保留的參數(shù),且設(shè)定這些參數(shù)成為控制加載器90所產(chǎn)生的WAC實(shí)例的參數(shù)74定義的屬性。控制執(zhí)行器92接著執(zhí)行WAC實(shí)例及產(chǎn)生更新的標(biāo)記碼,例如第二標(biāo)記碼集合。WAC實(shí)例可在其執(zhí)行時存取項(xiàng)目資源,以從存儲于服務(wù)器52的內(nèi)容源碼或WAC標(biāo)簽所引用的其它地方,取得內(nèi)容。
控制執(zhí)行器92的資源管理器96使得執(zhí)行的WAC實(shí)例可存取項(xiàng)目資源,例如內(nèi)容源碼。WAC實(shí)例可產(chǎn)生,讀取,更新與刪除項(xiàng)目資源。例如,產(chǎn)生橫幅或?qū)Ш綏l的WAC可存取網(wǎng)站地圖項(xiàng)目資源。另外,從數(shù)據(jù)庫產(chǎn)生網(wǎng)頁的WAC可刪除現(xiàn)有的網(wǎng)頁集合,且接著產(chǎn)生新網(wǎng)頁集合。
文件更新器84的內(nèi)容合并器94取得更新的標(biāo)記碼,且合并該標(biāo)記碼于該文件。即,內(nèi)容合并器94根據(jù)標(biāo)記碼的類型,即是自動產(chǎn)生或用戶產(chǎn)生,來合并第二標(biāo)記碼集合于第一標(biāo)記碼集合64。相互區(qū)分這些類型的標(biāo)記碼,以便于將第二標(biāo)記碼集合合并于第一標(biāo)記碼集合64。用戶產(chǎn)生的標(biāo)記碼被標(biāo)示成為由用戶所產(chǎn)生,而任何剩余的非用戶產(chǎn)生的標(biāo)記碼被假設(shè)為自動產(chǎn)生。第二標(biāo)記碼集合從新標(biāo)記碼形成,無論是自動產(chǎn)生或用戶產(chǎn)生,而第一標(biāo)記碼集合64包含舊標(biāo)記碼。在合并該二標(biāo)記碼集合之前,執(zhí)行對應(yīng)以決定該二集合的部分是否具有關(guān)聯(lián)性;且記錄任何此種對應(yīng)部分。
舊的自動產(chǎn)生標(biāo)記碼(位于第一標(biāo)記碼集合64)被從文件中移去,且替換為從第二標(biāo)記碼集合自動產(chǎn)生的新的標(biāo)記碼。未對應(yīng)于第一標(biāo)記碼集合64的部分的新標(biāo)記碼,無論自動產(chǎn)生或用戶產(chǎn)生,被插入第一標(biāo)記碼集合64。如果新標(biāo)記碼包含來自用戶的標(biāo)記,則檢查舊標(biāo)記碼是否存在匹配的標(biāo)記碼。舊用戶標(biāo)記碼與對應(yīng)的新用戶標(biāo)記碼可受到保存。這允許對于格式的原來的用戶變更可受到保留,且在WAC的自動執(zhí)行時不會受到覆蓋,例如,在響應(yīng)當(dāng)前項(xiàng)目的文件的變更時??商鎿Q地,通過在參數(shù)中指定這點(diǎn),舊用戶標(biāo)記碼被對應(yīng)的新用戶標(biāo)記碼所取代。用戶標(biāo)記碼可具有些名稱屬性,其中這些名稱屬性用于合并過程以構(gòu)成舊與新用戶標(biāo)記碼間的對應(yīng)。對應(yīng)的新用戶標(biāo)記碼可處于不同于舊用戶標(biāo)記碼的順序,在這種情況下,內(nèi)容合并器94模塊可重新排序舊用戶標(biāo)記碼。這允許WAC實(shí)現(xiàn)靈活的網(wǎng)頁布局。例如,假設(shè)網(wǎng)頁布局定義主標(biāo)題與側(cè)欄,且該側(cè)欄的位置由WAC的參數(shù)來指定。則當(dāng)該位置受到改變時,內(nèi)容合并器94將正確地重新排列這些布局區(qū)。
WAC處理器56的控制移除器86從第一標(biāo)記碼集合移除WAC標(biāo)簽。WAC處理器56通常保存WAC標(biāo)簽,但是可選地,WAC標(biāo)簽可通過在WAC標(biāo)簽中指定給WAC處理器56的輸入?yún)?shù)來受到移除。從第一標(biāo)記碼集合64移除WAC標(biāo)簽可降低文件大小,以及移除敏感的參數(shù)信息,例如數(shù)據(jù)庫密碼。
WAC處理器56的文件寫入器88寫入合并碼于輸出文件。合并器的輸出可覆蓋原文件,或?qū)懭氩煌募R驗(yàn)榭赡芟M刂埔瞥?,所以在公布時,合并碼可寫入不同的文件。
WAC處理也可發(fā)生于單一位置,其中服務(wù)器與客戶端功能位于單一計(jì)算機(jī)(未展示)。在此種情形之下,標(biāo)記碼文件可在用以開發(fā)該標(biāo)記碼的計(jì)算機(jī)上完全受到處理(即WAC執(zhí)行發(fā)生于客戶端)。在處理之后,具有第一標(biāo)記碼集合的文件可公布于標(biāo)準(zhǔn)網(wǎng)絡(luò)服務(wù)器,以處理顯示請求。該處理可通過傳送上下文參數(shù)作為WAC處理器的輸入來控制。該上下文參數(shù)指定文件的生命周期階段(即產(chǎn)生,維護(hù)等)。位于開發(fā)計(jì)算機(jī)的WAC處理器完全處理標(biāo)記碼以準(zhǔn)備其顯示,以響應(yīng)網(wǎng)絡(luò)服務(wù)器所接收的請求。
雖然迄今所述的本發(fā)明的實(shí)例是在撰寫結(jié)束時受到處理,但當(dāng)收到顯示網(wǎng)頁的請求時,WAC也可在執(zhí)行時受到處理。
WAC可用以周期性自動更新網(wǎng)頁的內(nèi)容。例如,如果網(wǎng)站包含具有產(chǎn)品信息的產(chǎn)品目錄,其中這些信息存儲于數(shù)據(jù)庫且每一天受到更新,則WAC可協(xié)助更新網(wǎng)頁以反映數(shù)據(jù)庫變更。網(wǎng)站的網(wǎng)頁的WAC可連接至該數(shù)據(jù)庫,及被用來抽取數(shù)據(jù)庫信息至網(wǎng)頁,且該網(wǎng)頁接著在網(wǎng)絡(luò)服務(wù)器受到公布。在數(shù)據(jù)庫的每次更新之后,WAC處理器可用來從該數(shù)據(jù)庫再生索引網(wǎng)頁與所有產(chǎn)品網(wǎng)頁。如果沒有其它動態(tài)內(nèi)容包含于該網(wǎng)頁,則產(chǎn)生的文件可以HTML來撰寫,或如果需要額外的動態(tài)內(nèi)容,則(例如)可以JSP來撰寫。使用WAC來產(chǎn)生不常變化(即相對靜態(tài))的內(nèi)容可降低所需的處理量。如果在無WAC下使用JSP,則會在執(zhí)行時針對請求的每一網(wǎng)頁都存取數(shù)據(jù)庫,而導(dǎo)致較慢的性能且需要更多計(jì)算機(jī)來維持可接受的性能。使用WAC會將運(yùn)行時處理限制于產(chǎn)生經(jīng)常改變的動態(tài)內(nèi)容。
本發(fā)明的一種可能實(shí)現(xiàn)是使用文件類型定義(DTD)來指定WAC標(biāo)簽,其中DTD是定義可用于XML文件的標(biāo)簽及它們的有效值的規(guī)則。WAC的定義可使用XML模式,以指定用于將WAC插入網(wǎng)頁的標(biāo)簽;Java庫,以開發(fā)WAC;與Java處理器,以產(chǎn)生標(biāo)記碼于包含WAC的網(wǎng)頁。XML模式是表示數(shù)據(jù)模型的系統(tǒng),以定義該數(shù)據(jù)的元素及屬性,與這些元素間的關(guān)系。標(biāo)識符72,參數(shù)74,與控制動作76可作為元素實(shí)現(xiàn),其中元素是XML結(jié)構(gòu)構(gòu)件,且具有啟始及結(jié)束標(biāo)簽,而該二標(biāo)簽間的信息稱為內(nèi)容。
在此種實(shí)現(xiàn)之下,關(guān)于WAC的執(zhí)行的信息,例如參數(shù)值與內(nèi)容源碼位置,被包含作為WAC標(biāo)簽的屬性。這允許WAC的嵌套,以致在第一WAC的執(zhí)行時,第二嵌入的WAC可受到發(fā)現(xiàn)及執(zhí)行,以包含其結(jié)果于第一WAC執(zhí)行的結(jié)果。
WAC的DTD指定所有數(shù)據(jù)皆表示成為WAC標(biāo)簽的XML屬性。WAC的DTD的完整實(shí)現(xiàn)展示于附錄A(wac.dtd)。因?yàn)榫W(wǎng)絡(luò)瀏覽器的正常行為是只顯示HTML標(biāo)簽,所以當(dāng)文件受到顯示時,所有WAC標(biāo)簽皆被有效地隱藏。因此,如此使用XML達(dá)成相同于使用HTML批注的效果,且使得WAC可嵌套,而這在復(fù)雜網(wǎng)頁布局的產(chǎn)生上可能有用。
對于第一標(biāo)記碼集合的HTML或XML解析,樹的生成產(chǎn)生文件對象模型(DOM),且該模型可用以控制WAC處理順序。
在此種可能實(shí)現(xiàn)之下,新WAC可通過實(shí)現(xiàn)Java類來產(chǎn)生。Java類是一組數(shù)據(jù)成員與方法,其定義特定對象。
基于此種實(shí)現(xiàn)的示范WAC的啟動展示于下文。
<pre listing-type="program-listing"><?xml version=′1.0′encoding=″ISO-8859-1″?><html><head> <title>Listing of source</title> <body> <h4>Listing of source.</h4> <waccontrol xmlnswac=″umibm.comwac″name=″mod″ class=″wac.sample.Include″> <wacparameters><wacparam name=″include″value=″/source″ valuetype=″ref″/><wacparam name=″formatted″value=″true″/> <wacparam name=″numbered″value=″false″/> </wacparameters> </wacmarkup><waccontrol><!-- SIPO <DP n="10"> --><dp n="d10"/> </body> </html></pre>標(biāo)簽<waccontrol>標(biāo)示W(wǎng)AC標(biāo)簽的開始。此標(biāo)簽指定要使用的WAC是稱為wac.sample.Include的Java類。此類將由WAC處理器56來執(zhí)行。標(biāo)簽<wacparameters>標(biāo)示參數(shù)區(qū)的開始。其指定名稱為″include″的參數(shù)具有值″/source″,且這是由Include WAC來解譯,而意謂資源″source″要包含于HTML網(wǎng)頁。直到WAC受到處理及″source″的內(nèi)容的HTML標(biāo)記碼被產(chǎn)生,該網(wǎng)頁不包含″source″的內(nèi)容。當(dāng)該網(wǎng)頁受到處理時,WAC處理器讀取這些網(wǎng)頁且定位該網(wǎng)頁中WAC,傳送指定的參數(shù)給它們,執(zhí)行它們,與合并它們的輸出回到該網(wǎng)頁。
對于Java實(shí)現(xiàn),控制元素具有名稱,類與使能值。名稱是用于控制的獨(dú)特標(biāo)識符,以致其可由其它控制來引用。類是實(shí)現(xiàn)該控制的Java類的名稱。設(shè)定使能值以決定是否該控制應(yīng)再生其標(biāo)記。下面是控制元素的示范結(jié)構(gòu)。
<!ELEMENT control(parameters,markup)>
<!ATTLIST controlid ID#REQUIREDclass CDATA#REQUIREDenabled(true|false)″true″>
控制元素包含參數(shù)元素與標(biāo)記元素,其中該參數(shù)元素包含用以設(shè)定屬性的參數(shù),且該標(biāo)記元素包含產(chǎn)生的標(biāo)記。
參數(shù)元素包含用以設(shè)定控制屬性的參數(shù)。下面是參數(shù)元素的示范結(jié)構(gòu)。
<!ELEMENT parameters(param|paramarray)*>
參數(shù)元素包含param元素,以定義單一控制屬性。Param屬性具有如下的示范結(jié)構(gòu)。
<!ELEMENT param EMPTY>
<!ATTLIST paramname CDATA#REQUIREDvalue CDATA#REQUIREDvaluetype(data|ref|object)″data″>
param元素具有屬性名稱與屬性值。param元素也具有屬性值類型,且該屬性值類型可為數(shù)據(jù)(例如多個字符串),URL引用或另一元素。如果該屬性類型是URL,其可為絕對的,或開始于方案,例如″http″,或其可為相對的。相對URL引用相同項(xiàng)目的另一資源。
參數(shù)元素也包含param數(shù)組元素,且其具有概述于下文的示范結(jié)構(gòu)。
<!ELEMENT paramarray(paramvalue)*>
<!ATTLIST paramarrayname CDATA#REQUIREDvaluetype(data|ref|object)″data″>
paramarray元素定義控制標(biāo)號屬性。param數(shù)組具有類似于param元素的屬性名稱與屬性值類型。
Paramarray還具有paramvalue元素,且其示范結(jié)構(gòu)概述于下。
<!ELEMENT paramvalue EMPTY>
<!ATTLIST paramvaluevalue CDATA#required>
paramvalue元素定義給定標(biāo)號的帶標(biāo)號屬性的值。paramvalue元素在param數(shù)組元素中的位置定義該標(biāo)號。
標(biāo)記元素包含控制元素所產(chǎn)生的標(biāo)記。標(biāo)記元素可包含任何有效的非WAC標(biāo)記,以及控制與用戶標(biāo)記元素,無論是直接地或間接地。產(chǎn)生的標(biāo)記可由用戶通過禁止控制元素使能值來改變??商鎿Q地,WAC標(biāo)簽可從產(chǎn)生的標(biāo)記中移除。
用戶標(biāo)記元素允許用戶插入標(biāo)記于WAC所產(chǎn)生的標(biāo)記。當(dāng)WAC再生該標(biāo)記時,用戶標(biāo)記元素的內(nèi)容受到保存。用戶標(biāo)記元素具有名稱,以標(biāo)識指定其目的的元素。用戶標(biāo)記元素可包含任何非WAC標(biāo)記以及控制元素。
附錄A示范WAC.DTD<!DOCTYPE eBAF-WAC-1.0[<!--此DTD描述網(wǎng)絡(luò)撰寫控制,或簡寫為WAC。WAC是用以撰寫網(wǎng)頁的生產(chǎn)效率協(xié)助工具。WAC可用以簡化產(chǎn)生復(fù)雜標(biāo)記的工作,或其可自動化繁復(fù)工作,例如當(dāng)其所依賴的資源發(fā)生變化時更新標(biāo)記。WAC在開發(fā)時執(zhí)行。當(dāng)文件被部署至其運(yùn)行時環(huán)境時,所有WAC標(biāo)簽皆可自該文件中受到移除。
WAC包含于文件,且該文件可為HTML,JSP,或通用XML。文件是包含相關(guān)的文件與資源的項(xiàng)目的一部分。例如,WAC可用以從網(wǎng)站地圖資源產(chǎn)生導(dǎo)航條。項(xiàng)目與文件是WAC的執(zhí)行上下文的一部分。在執(zhí)行的過程中,WAC可讀取資源,更新或刪除現(xiàn)有的資源,與產(chǎn)生新的資源。用以嵌入WAC于文件的標(biāo)簽方案符合XML。WAC標(biāo)簽包含的所有非標(biāo)記數(shù)據(jù)(亦即元數(shù)據(jù))皆表示成為元素屬性,以致包含WAC的文件可通過普通網(wǎng)絡(luò)瀏覽器來顯示。相對地,WebBot與DTC存儲元數(shù)據(jù)于HTML批注,而這些批注無法嵌套。因?yàn)槠湓试SWAC嵌套并因此組合,所以使用XML元素更具威力。例如,網(wǎng)頁布局WAC可包含嵌套的導(dǎo)航WAC。
-->
<!--<control>元素控制是從參數(shù)產(chǎn)生標(biāo)記的JavaBean。控制類似于參數(shù)化宏。這些參數(shù)可為簡單的數(shù)據(jù),例如數(shù)字或字符串,或?qū)ξ挥陧?xiàng)目中的相同文件或資源的其它控制的引用。
控制通過展現(xiàn)用戶界面來簡化網(wǎng)絡(luò)撰寫,且該用戶界面協(xié)助用戶設(shè)定參數(shù)。用戶界面通過JavaBean定義,且可為屬性表單,以及可選的定制屬性編輯器,或定制器。當(dāng)控制受到選擇以供編輯時,編輯器應(yīng)展現(xiàn)屬性表單或定制器給用戶。
控制可用以自動化繁復(fù)工作,例如增加行號至列表,或使得用戶無需能夠撰寫復(fù)雜的HTML與JSP標(biāo)簽,或Java小腳本。
<control>元素具有下列屬性名稱(name)用于控制的獨(dú)特標(biāo)識,以致其可為其它控制所引用類(class)實(shí)現(xiàn)控制的Java類的名稱使能(enabled)如果控制應(yīng)再生其標(biāo)記,則為真。
id屬性是標(biāo)識,以致控制可為其它控制所參考。
類屬性是實(shí)現(xiàn)控制的類的完全修飾名稱。WAC處理器定位類的方式未受到定義。
如果想要的話,使能屬性允許用戶禁止控制。例如,用戶可能希望暫時改變產(chǎn)生的標(biāo)記。
<control>元素包含<parameters>元素與<markup>元素,其中<parameters>元素用以設(shè)定JavaBean屬性,且<markup>元素包含產(chǎn)生的標(biāo)記。
-->
<!ELEMENT control(parameters,markup)>
<!ATTLIST controlid ID#REQUIREDclass CDATA#REQUIREDenabled(true|false)″true″>
<!--<parameters>元素<parameters>元素包含用以設(shè)定控制屬性的這些參數(shù)。因?yàn)榭刂剖荍avaBean,其屬性可為單值或帶有標(biāo)號。
<parameters>元素可包含零或更多<param>或<paramarray>元素。
<param>元素定義單值屬性。
<paramarray>元素定義帶標(biāo)號屬性。
-->
<!ELEMENT parameters(param|paramarray)*>
<!--<param>元素<param>元素定義控制屬性。其包含下列屬性名稱(name)屬性名稱值(value)屬性名稱值類型(valuetype)屬性值類型,其可為下列其中的數(shù)據(jù)(data)值是簡單數(shù)據(jù),例如數(shù)字或字符串引用(ref)值是URL對象(object)值是此文件中另一元素的標(biāo)識ref類型的值為URL。URL可為絕對或相對的。如果URL開始于方案,例如″http″,則其為絕對的。否則其是相對的。
相對的URL參考項(xiàng)目的另一資源。如果URL開始于″/″,則其是相對于項(xiàng)目根部。否則,URL是相對于文件。如果引用的資源受到移動或重新命名,或如果文件受到移動,則符合WAC的網(wǎng)站管理工具應(yīng)更新此值。
對象類型的值是文件的另一元素的標(biāo)識。如果引用的元素的表示受到改變,則符合WAC的編輯器應(yīng)更新此值。
-->
<!ELEMENT param EMPTY>
<!ATTLIST paramname CDATA#REQUIREDvalue CDATA#REQUIREDvaluetype(data|ref|object)″data″>
<!--<paramarray>元素<paramarray>元素定義控制帶標(biāo)號屬性。其包含下列屬性名稱(name)屬性名稱值類型(valuetype)屬性值類型(請參看<param>元素)<paramarray>元素包含零或更多<paramvalue>元素,以定義帶標(biāo)號屬性的值。
-->
<!ELEMENT paramarray(paramvalue)*>
<!ATTLIST paramarrayname CDATA#REQUIREDvaluetype(data|ref|object)″data″>
<!<paramvalue>元素<paramvalue>元素定義給定索引的帶標(biāo)號屬性的值。<paramvalue>組件在<paramarray>元素的位置定義該索引。
<paramvalue>元素具有下列屬性值(value)屬性值-->
<!ELEMENT paramvalue EMPTY>
<!ATTLIST paramvalue
value CDATA#REQUIRED>
<!--<markup>元素<markup>元素包含控制所產(chǎn)生的標(biāo)記。<markup>元素可包含任何有效的非WAC標(biāo)記,且也可包含,直接或間接地,<control>與<usermarkup>元素。
因?yàn)楫?dāng)標(biāo)記受到再生時,用戶對于標(biāo)記所做的任何變更皆會受到取代,所以編輯器應(yīng)視未包含于<usermarkup>元素的任何標(biāo)記為受寫保護(hù)的。為保存用戶標(biāo)記,其必須包含于<usermarkup>元素。
如果用戶需要改變產(chǎn)生的標(biāo)記,則存在兩個選擇。
首先,用戶可通過設(shè)定其使能屬性為假以禁止控制。符合WAC的編輯器應(yīng)提供一種方式,以致用戶可使能或禁止所有或選擇的控制。
第二,用戶可從文件中移除圍繞產(chǎn)生的標(biāo)記的WAC標(biāo)簽。符合WAC的編輯器應(yīng)提供一種方式,以致用戶可移除所有或選擇的控制。
-->
<!ELEMENT markup ANY>
<!--<usermarkup>元素<usermarkup>元素允許用戶插入標(biāo)記于WAC所產(chǎn)生的標(biāo)記。當(dāng)WAC再生該標(biāo)記時,<usermarkup>元素的內(nèi)容通常受到保存。
<usermarkup>元素具有下列屬性名稱(name)指定其目的的元素的名稱雖然<usermarkup>元素的內(nèi)容通常受到保存,當(dāng)WAC再生該標(biāo)記時,它們的相對順序可能改變。除此的外,新<usermarkup>元素可受到產(chǎn)生,且現(xiàn)有的組件可受到刪除。WAC產(chǎn)生<usermarkup>元素,且WAC處理器通過匹配名稱屬性來合并于現(xiàn)有內(nèi)容。
<usermarkup>元素可包含任何非WAC標(biāo)記與<control>元素。
-->
<!ELEMENT usermarkup ANY>
<!ATTLIST usermarkup name CDATA″″>
]>
權(quán)利要求
1.一種為服務(wù)器上的多個文件自動產(chǎn)生顯示格式化指令以用來在運(yùn)行時顯示這些多個文件于客戶端的方法,其中該服務(wù)器具有多個格式化控制與文件,該文件具有第一格式化指令集合,該第一格式化指令集合包含多個引用,每一引用指示這些多個格式化控制中的一個控制與這些多個文件中的一個文件,該方法包含(A)處理所述文件,以定位這些多個引用的每一個來形成樹;(B)根據(jù)這些多個引用中的一個引用,執(zhí)行這些多個格式化控制中的一個控制,以基于在所述這些多個引用中的一個引用中所指示的文件,產(chǎn)生第二格式化指令集合;(C)將所述第二格式化指令集合融入輸出文件;與(D)針對所述樹的這些多個引用中的每一引用重復(fù)(B)至(C);其中在這些多個引用中所指示的這些多個格式化控制中的每一個都在運(yùn)行時間之前被執(zhí)行。
2.如權(quán)利要求1所述的方法,其中這些多個格式化控制根據(jù)它們在該樹中的深度,依照深度優(yōu)先順序被執(zhí)行。
3.如上述權(quán)利要求中任何一項(xiàng)所述的方法,其中第一格式化指令集合與所述第二格式化指令集合都是以標(biāo)記語言來撰寫。
4.如上述權(quán)利要求中任何一項(xiàng)所述的方法,進(jìn)一步包含在執(zhí)行所述樹中的這些多個引用中的每一個引用之后,從第一格式化指令集合中移除這些多個引用。
5.如上述權(quán)利要求中任何一項(xiàng)所述的方法,其中格式化指令是自動產(chǎn)生或用戶產(chǎn)生的類型,所述第一格式化指令集合具有此處所指的所述自動產(chǎn)生與用戶產(chǎn)生的類型,且其中步驟(C)包含(I)將在所述第二格式化指令集合中的被自動產(chǎn)生的格式化指令標(biāo)明為所述自動產(chǎn)生的類型;(II)將在所述第二格式化指令集合中的由用戶產(chǎn)生的格式化指令標(biāo)明為所述用戶產(chǎn)生的類型;與(III)根據(jù)格式化指令的類型與第一格式化指令集合,將自動產(chǎn)生的格式化指令與用戶產(chǎn)生的格式化指令插入到該文件中。
6.如權(quán)利要求5所述的方法,其中步驟(III)包含(a)確定第一格式化指令集合的部分是否對應(yīng)于所述第二格式化指令集合的部分;(b)插入所述第二格式化指令集合的未對應(yīng)于第一格式化指令集合的所有部分;(c)如果對應(yīng)于第一格式化指令集合的部分的所述第二格式化指令集合的部分是自動產(chǎn)生類型,則用所述第二格式化指令集合的對應(yīng)部分來取代第一格式化指令集合的對應(yīng)部分;與(d)如果對應(yīng)于第一格式化指令集合的部分的該第二格式化指令集合的部分是用戶產(chǎn)生類型,則根據(jù)所述第二格式化指令集合的對應(yīng)部分的格式來重新格式化第一格式化指令集合的所述對應(yīng)部分。
7.如權(quán)利要求6所述的方法,其中步驟(d)包含(i)在用戶產(chǎn)生類型的第一格式化指令集合的對應(yīng)部分與用戶產(chǎn)生類型的所述第二格式化指令集合的對應(yīng)部分之間,產(chǎn)生對應(yīng);與(ii)對應(yīng)所述對應(yīng)用戶產(chǎn)生類型的第一格式化指令集合的順序與所述對應(yīng)用戶產(chǎn)生類型的第二格式化指令集合的順序。
8.如上述權(quán)利要求中任何一項(xiàng)所述的方法,其中該文件是多個文件中的一個文件,且進(jìn)一步包含(E)在步驟(A)之前,檢測所述多個文件中的一個文件的變化;與(F)針對所述多個文件中的每一文件重復(fù)(A)至(D)。
9.一種執(zhí)行上述權(quán)利要求中任何一項(xiàng)所述的方法的服務(wù)器計(jì)算機(jī)系統(tǒng)。
10.一種計(jì)算機(jī)程序產(chǎn)品,存儲在計(jì)算機(jī)可讀存儲介質(zhì)上,用來在計(jì)算機(jī)系統(tǒng)上執(zhí)行時,指揮該計(jì)算機(jī)系統(tǒng)執(zhí)行上述權(quán)利要求中任何一項(xiàng)所述的方法。
全文摘要
本發(fā)明提供一種為服務(wù)器上的多個文件自動產(chǎn)生顯示格式化指令以用來在運(yùn)行時顯示這些多個文件于客戶端的方法,其中該服務(wù)器具有多個格式化控制與文件,該文件具有第一格式化指令集合,該第一格式化指令集合包含多個引用,每一引用指示這些多個格式化控制中的一個控制與這些多個文件中的一個文件,所述方法包含(A)處理所述文件,以定位這些多個引用的每一個來形成樹;(B)根據(jù)這些多個引用中的一個引用,執(zhí)行這些多個格式化控制中的一個控制,以基于在所述這些多個引用中的一個引用中所指示的文件,產(chǎn)生第二格式化指令集合;(C)將所述第二格式化指令集合融入輸出文件;與(D)針對所述樹的這些多個引用中的每一引用重復(fù)(B)至(C);其中在這些多個引用中所指示的這些多個格式化控制中的每一個都在運(yùn)行時間之前被執(zhí)行。
文檔編號G06F13/00GK1545664SQ02811547
公開日2004年11月10日 申請日期2002年5月28日 優(yōu)先權(quán)日2001年6月15日
發(fā)明者阿瑟·G·賴曼, 阿瑟 G 賴曼 申請人:國際商業(yè)機(jī)器公司