專(zhuān)利名稱(chēng):順序布局構(gòu)建器體系結(jié)構(gòu)的制作方法
順序布局構(gòu)建器體系結(jié)構(gòu)
背景技術(shù):
使用Web瀏覽器再現(xiàn)結(jié)構(gòu)化的Web內(nèi)容,諸如HTML和CSS內(nèi)容,典型地牽涉到處理包括標(biāo)記的結(jié)構(gòu)化文檔以確定內(nèi)容的布局(layout),使得其可以由Web瀏覽器呈現(xiàn)。這樣的處理可以包括內(nèi)容位置、大小和形狀計(jì)算,以便從所述標(biāo)記確定相關(guān)聯(lián)的內(nèi)容將如何被呈現(xiàn)在屏幕或顯示器上。對(duì)于可用性和用戶(hù)感知而言,期望的是布局和呈現(xiàn)算法按照可適用的標(biāo)準(zhǔn)快速并正確地工作。在整個(gè)業(yè)界,布局處理普遍以遞歸方式執(zhí)行。例如,這樣的處理可以包括在HTML標(biāo)記的根節(jié)點(diǎn)上發(fā)起處理操作,并以遞歸的方式貫穿該標(biāo)記向下處理到葉節(jié)點(diǎn)。該處理典型地在HTML文檔被呈現(xiàn)之前在整個(gè)HTML文檔上進(jìn)行。此外,現(xiàn)代的多核體系結(jié)構(gòu)可以準(zhǔn)許處理被并行地執(zhí)行。然而,因?yàn)椴季痔幚淼倪f歸性質(zhì),從并行處理所得到的優(yōu)勢(shì)不能被充分利用。
布局處理的遞歸性質(zhì)也可能導(dǎo)致處理中的重復(fù),這進(jìn)而又可能使性能和用戶(hù)體驗(yàn)降級(jí)。
發(fā)明內(nèi)容
本概要被提供來(lái)以簡(jiǎn)化的形式介紹概念的選擇,這些概念還將在下面的詳細(xì)說(shuō)明中進(jìn)行描述。本概要既不打算確認(rèn)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不打算被使用來(lái)限制所要求保護(hù)的主題的范圍。按照一個(gè)或多個(gè)實(shí)施例,對(duì)結(jié)構(gòu)化文檔的布局處理以順序的方式實(shí)施(conduct)。布局過(guò)程被分成可以順序地執(zhí)行的多個(gè)更小的步驟。在至少一些實(shí)施例中,布局構(gòu)建器被結(jié)合棧使用以控制在文檔的結(jié)構(gòu)層次的各層次上的布局執(zhí)行。不可變的數(shù)據(jù)結(jié)構(gòu)被使用,并且其允許順序布局操作的并行執(zhí)行。在至少一些實(shí)施例中,可以完成布局序列的部分執(zhí)行來(lái)產(chǎn)生可用的數(shù)據(jù)。
在全部附圖中,使用相同的標(biāo)號(hào)來(lái)標(biāo)注同樣的特征。圖I圖示了按照一個(gè)或多個(gè)實(shí)施例的、在其中可以利用這里描述的各種原理的操作環(huán)境。圖2圖示了按照一個(gè)或多個(gè)實(shí)施例的示例性體系結(jié)構(gòu)。圖3描述了按照一個(gè)或多個(gè)實(shí)施例的、在順序布局構(gòu)建過(guò)程中的布局空間分配協(xié)議。圖4是描述按照一個(gè)或多個(gè)實(shí)施例的方法中的步驟的流程圖。圖5圖示了按照一個(gè)或多個(gè)實(shí)施例的布局框的類(lèi)層次。圖6圖示了按照一個(gè)或多個(gè)實(shí)施例的框構(gòu)建器的類(lèi)層次。圖7圖示了可以被使用來(lái)實(shí)施一個(gè)或多個(gè)實(shí)施例的示例性系統(tǒng)。
具體實(shí)施例方式綜沭
按照一個(gè)或多個(gè)實(shí)施例,布局處理以順序的方式實(shí)施。布局過(guò)程被分成可以順序地執(zhí)行的多個(gè)更小的步驟。在至少一些實(shí)施例中,布局構(gòu)建器被結(jié)合棧使用以控制在結(jié)構(gòu)化文檔的結(jié)構(gòu)層次的各層次上的布局執(zhí)行。不可變的數(shù)據(jù)結(jié)構(gòu)被使用,并且允許順序布局操作的并行執(zhí)行。在至少一些實(shí)施例中,可以完成布局序列的部分執(zhí)行來(lái)產(chǎn)生可用的數(shù)據(jù)。這里描述的技術(shù)可以結(jié)合任意類(lèi)型的結(jié)構(gòu)化文檔一起被使用,作為例子而不是限制,結(jié)構(gòu)化文檔諸如是HTML文檔。在一個(gè)或多個(gè)實(shí)施例中,在布局構(gòu)建器的影響下,順序布局處理被組織為按一組順序的步驟執(zhí)行的非遞歸樹(shù)徑(tree walk),所述的一組順序的步驟諸如像“進(jìn)入塊”、“退出塊”、“構(gòu)建行”等等。一個(gè)個(gè)步驟可以具有恒定的時(shí)間來(lái)執(zhí)行,并且整個(gè)過(guò)程可以在一個(gè)個(gè)步驟后被停止,以便產(chǎn)生可用于再現(xiàn)和用戶(hù)交互的部分布局。
在一個(gè)或多個(gè)實(shí)施例中,通過(guò)把在布局構(gòu)建期間使用的臨時(shí)數(shù)據(jù)與提供用于再現(xiàn)和交互的布局結(jié)果的持久性數(shù)據(jù)進(jìn)行分離,而將布局構(gòu)建數(shù)據(jù)結(jié)構(gòu)組織成達(dá)到高效緊致性。臨時(shí)數(shù)據(jù)由一組布局構(gòu)建器代表,每種布局一個(gè)布局構(gòu)建器。布局構(gòu)建器是在布局處理期間臨時(shí)存在的臨時(shí)對(duì)象。另一方面,持久性數(shù)據(jù)被表示為存儲(chǔ)在最終得到的顯示樹(shù)中的布局框,顯示樹(shù)可以被處理來(lái)呈現(xiàn)相關(guān)聯(lián)的內(nèi)容。這樣做可以比過(guò)去更加高效地利用存儲(chǔ)器資源。例如,在HTML處理的上下文中,在任一特定時(shí)間存在的布局構(gòu)建器的數(shù)量由HTML文檔的深度來(lái)限定,而不是由HTML文檔的寬度來(lái)限定。因此,由布局構(gòu)建器代表的臨時(shí)數(shù)據(jù)不必駐留在最終得到的顯示樹(shù)中。另外,被處理的數(shù)據(jù)和處理算法都以可伸縮的方式被組織。這允許任意的布局片段的執(zhí)行。這種順序可伸縮性導(dǎo)致了對(duì)于可以被使用于回溯針對(duì)滾動(dòng)、分頁(yè)、欄目化等等的嘗試的算法的改進(jìn)性能。此外,在至少一些實(shí)施例中,布局結(jié)果由被設(shè)計(jì)為不可變的布局框所代表。這使得布局框能夠在動(dòng)態(tài)情景中被再次使用,動(dòng)態(tài)情景諸如是漸增的部分更新、并行布局、漸進(jìn)式再現(xiàn)以及回溯布局執(zhí)行。此外,在至少一些實(shí)施例中,在規(guī)定的、計(jì)算的以及已用值和結(jié)構(gòu)之間強(qiáng)制分離。這允許跨整個(gè)布局流水線的、部分的和可再次使用的計(jì)算。在HTML上下文中,規(guī)定的值涉及在原始的HTML標(biāo)記中如何規(guī)定值。這些值可能是矛盾的、不完整的和無(wú)效的。這些不一致性可使規(guī)定的值很難利用。計(jì)算的值是與歸一化屬性和歸一化值的組合相關(guān)聯(lián)的。這些值是不矛盾的且是可靠的。已用值代表在布局框中存儲(chǔ)的值。在隨后的討論中,提供了標(biāo)題為“操作環(huán)境”的章節(jié),其描述了一種在其中可以利用一個(gè)或多個(gè)實(shí)施例的環(huán)境。在這之后,標(biāo)題為“示例性體系結(jié)構(gòu)”的章節(jié)描述了按照一個(gè)或多個(gè)實(shí)施例的示例性體系結(jié)構(gòu)。接著,標(biāo)題為“示例性方法”的章節(jié)描述了按照一個(gè)或多個(gè)實(shí)施例的示例性方法。在這之后,標(biāo)題為“實(shí)施細(xì)節(jié)”的章節(jié)描述了按照一個(gè)或多個(gè)實(shí)施例的實(shí)施細(xì)節(jié)。最后,標(biāo)題為“示例性系統(tǒng)”的章節(jié)描述了可以被使用來(lái)實(shí)施一個(gè)或多個(gè)實(shí)施例的示例性系統(tǒng)。操作環(huán)境
圖I圖示了按照一個(gè)或多個(gè)實(shí)施例的操作環(huán)境,總地標(biāo)為100。環(huán)境100包括計(jì)算設(shè)備102,其具有一個(gè)或多個(gè)處理器104、一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)媒體106、和駐留在計(jì)算機(jī)可讀存儲(chǔ)媒體上并可由處理器執(zhí)行的一個(gè)或多個(gè)應(yīng)用108。作為例子而不是限制,所述計(jì)算機(jī)可讀存儲(chǔ)媒體可以包括典型地與計(jì)算設(shè)備相關(guān)聯(lián)的、所有形式的易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)媒體。這樣的媒體可以包括ROM、RAM、閃存、硬盤(pán)、可拆卸媒體等等。下面在圖7中顯示和描述了計(jì)算設(shè)備的一個(gè)特定的例子。另外,計(jì)算設(shè)備102包括以web瀏覽器110形式的軟件應(yīng)用??梢允褂萌魏芜m當(dāng)?shù)膚eb瀏覽器,其例子是從本文檔的受讓人和其它方可得到的。另外,計(jì)算機(jī)可讀存儲(chǔ)媒體106可以包括順序布局構(gòu)建器111,其按上面和下面所描述的那樣進(jìn)行操作。順序布局構(gòu)建器111可以被實(shí)施為可由應(yīng)用108和瀏覽器110使用的獨(dú)立的組件。替換地或另外地,順序布局構(gòu)建器111可以被實(shí)施為應(yīng)用108和/或?yàn)g覽器110的一部分。在操作中,順序布局構(gòu)建器111允許諸如HTML文檔這樣的結(jié)構(gòu)化文檔的順序處理,以及允許布局以順序的方式被計(jì)算。順序布局構(gòu)建器使用高效的體系結(jié)構(gòu),該體系結(jié)構(gòu)利用了布局構(gòu)建器的用來(lái)監(jiān)督布局處理的過(guò)程的用途、利用了熟知它們自己的針對(duì)內(nèi)容處理的要求的框構(gòu)建器類(lèi)型、以及利用了由框構(gòu)建器類(lèi)型的實(shí)例構(gòu)建且持有最終要在顯示器或屏幕上再現(xiàn)的數(shù)據(jù)的相關(guān)聯(lián)的布局框。另外,環(huán)境100包括諸如因特網(wǎng)那樣的網(wǎng)絡(luò)112,以及可以從其接收內(nèi)容和向其發(fā)送內(nèi)容的一個(gè)或多個(gè)網(wǎng)站114。這樣的內(nèi)容可以包括諸如HTML文檔的結(jié)構(gòu)化文檔,以及可以由順序布局構(gòu)建器111如上面和下面描述的在其上進(jìn)行操作的其它web內(nèi)容。計(jì)算設(shè)備102可以被具體化為任何適當(dāng)?shù)挠?jì)算設(shè)備,作為例子而不是限制,諸如是臺(tái)式計(jì)算機(jī),便攜式計(jì)算機(jī),比如個(gè)人數(shù)字助理(PDA)、蜂窩電話(huà)那樣的手持式計(jì)算機(jī),等
坐寸o已經(jīng)描述了示例性操作環(huán)境后,現(xiàn)在考慮可以被使用來(lái)順序地處理諸如HTML的結(jié)構(gòu)化文檔的示例性體系結(jié)構(gòu)的討論。在下面的討論中,使用HTML做為結(jié)構(gòu)化文檔的例子。應(yīng)當(dāng)理解和明白,下面描述的技術(shù)可以結(jié)合其它類(lèi)型的結(jié)構(gòu)化文檔一起被利用,而不背離所要求保護(hù)的主題的精神和范圍。示例件體系結(jié)構(gòu)
圖2圖示了按照一個(gè)或多個(gè)實(shí)施例的示例性體系結(jié)構(gòu),總地標(biāo)為200。在這個(gè)特定的例子中,體系結(jié)構(gòu)200包括布局構(gòu)建器202、框構(gòu)建器204、布局框206、容器框208和行框210。另外,體系結(jié)構(gòu)200包括可以在HTML的順序布局處理期間采取的動(dòng)作212、214、216和218的表示。該體系結(jié)構(gòu)被使用來(lái)構(gòu)建布局框的顯示樹(shù),其中布局框包含內(nèi)容或數(shù)據(jù),諸如文本、圖像或圖形元素,比如將要在屏幕或顯示器上再現(xiàn)的順序矢量圖形(Svg)元素。在圖示的和描述的實(shí)施例中,布局構(gòu)建器202構(gòu)成監(jiān)督或組織整個(gè)順序布局處理的布局引擎或?qū)ο?。布局?gòu)建器202負(fù)責(zé)實(shí)例化布局框206,然后與框構(gòu)建器204進(jìn)行通信以務(wù)必使(see)布局框206被填充以要在屏幕或顯示器上再現(xiàn)的內(nèi)容??驑?gòu)建器204是負(fù)責(zé)構(gòu)建特定類(lèi)型的布局框的對(duì)象。特別地,有不同類(lèi)型的框構(gòu)建器,在204上只顯示了其中的一個(gè)。有用于構(gòu)建表、圖像、多色、行等等的框構(gòu)建器??驑?gòu)建器被特定地配置成構(gòu)建特定的一段內(nèi)容。如本領(lǐng)域的技術(shù)人員所理解的,不同類(lèi)型的內(nèi)容具有不同的布局要求。每個(gè)不同類(lèi)型的框構(gòu)建器熟知針對(duì)它的相關(guān)聯(lián)的內(nèi)容類(lèi)型的不同布局要求,并能構(gòu)建相對(duì)應(yīng)的一段內(nèi)容。
在圖示的和描述的實(shí)施例中,框構(gòu)建器204是代表這些不同類(lèi)型的構(gòu)建器的共同屬性和方法的抽象類(lèi),并因此定義了框構(gòu)建的通用聯(lián)系(contact)。布局構(gòu)建器202接收HTML文檔并且順序地移動(dòng)穿過(guò)該文檔,與框構(gòu)建器204進(jìn)行通信,框構(gòu)建器204進(jìn)而又用它的內(nèi)容來(lái)填充布局框206。在這個(gè)特定的例子中,容器框208和行框210代表布局框206的子類(lèi)別或子類(lèi)。行框210代表對(duì)應(yīng)于一行文本的個(gè)別情形。容器框208是可包含諸如容器框和行框這樣的其它框的框。諸如圖像和Svg圖元這樣的內(nèi)容被作為容器框?qū)Υ?。?dòng)作212、214、216和218構(gòu)成代表在順序布局處理期間發(fā)生的一系列基本構(gòu)建步驟的動(dòng)作或函數(shù)。這里,有四個(gè)動(dòng)作BuildLine (f)、EnterBlock (f)、ReEnterBlock (f)和ExitBox (f)。所述函數(shù)加有代表布局構(gòu)建器的縮寫(xiě)“LB”的前綴,因?yàn)樗鼈儽粚?shí)施為這個(gè)類(lèi)的方法。針對(duì)這些方法中的每個(gè)方法的主要參數(shù)是當(dāng)前的框構(gòu)建器,其在圖中由從框構(gòu)建 器204朝向所述方法中的每個(gè)的數(shù)據(jù)流箭頭來(lái)反映。BuildLine (f)
這個(gè)方法對(duì)應(yīng)于在其上構(gòu)建一行文本的布局構(gòu)建器202的基本步驟。這是可以由布局構(gòu)建器構(gòu)建的內(nèi)容的最小原子部分。要指出的是,所有可能的嵌套的塊,諸如內(nèi)聯(lián)塊(inline block)、浮動(dòng)物(floater)、或錨定在該行的絕對(duì)定位的塊,并不在BuildLine函數(shù)內(nèi)部遞歸地構(gòu)建。而是,它們作為該行的兄弟(sibling)經(jīng)由EnterBlock/ExitBox回調(diào)而被單獨(dú)地構(gòu)建。EnterBlock (f)
當(dāng)布局構(gòu)建器202遇到諸如DIV或TABLE的某個(gè)塊元素的打開(kāi)標(biāo)簽時(shí)執(zhí)行這個(gè)方法。ReEnterBlock(f)
在塊被前一頁(yè)上的分頁(yè)符中斷后,當(dāng)該塊在后一頁(yè)上被進(jìn)入時(shí),調(diào)用這個(gè)方法。ExitBox (f)
當(dāng)布局構(gòu)建器202到達(dá)塊元素的結(jié)束標(biāo)簽時(shí),或在當(dāng)分段的(分頁(yè)的)空間在頁(yè)邊界上被中斷時(shí)的情形下,執(zhí)行這個(gè)方法。在操作中,布局處理被組織為對(duì)應(yīng)于HTML的基本結(jié)構(gòu)單元(即,純文本的元素標(biāo)簽或順串(run))的一系列步驟。布局構(gòu)建器202接收HTML文檔且一個(gè)接一個(gè)地讀取這些單元,并執(zhí)行適當(dāng)?shù)膭?dòng)作。當(dāng)布局構(gòu)建器遇到打開(kāi)標(biāo)簽時(shí),它識(shí)別其類(lèi)型、創(chuàng)建適當(dāng)?shù)念?lèi)型特定的框構(gòu)建器(比如框構(gòu)建器204)、以及通過(guò)將所述框構(gòu)建器推給構(gòu)建棧來(lái)激活該框構(gòu)建器。然后所述類(lèi)型特定的框構(gòu)建器將控制針對(duì)特定元素構(gòu)建布局內(nèi)容的過(guò)程。當(dāng)布局構(gòu)建器遇到元素的關(guān)閉標(biāo)簽時(shí),它與活動(dòng)的、類(lèi)型特定的框構(gòu)建器通信以使得最終得到的布局框被完成并被附連到顯示樹(shù)上。在這個(gè)過(guò)程期間,當(dāng)遇到一行文本時(shí),行框形式的布局框(比如行框210)被創(chuàng)建并被插入到顯示樹(shù)中。圖3在某些方面與圖2類(lèi)似,其描述了按照一個(gè)或多個(gè)實(shí)施例的、在順序布局構(gòu)建過(guò)程中的布局空間分配協(xié)議300。該圖也代表可擴(kuò)展性模型。圖3描述了在通用布局構(gòu)建器和多個(gè)特定框構(gòu)建器之間的協(xié)議??蓴U(kuò)展性通過(guò)簡(jiǎn)單地將新的框構(gòu)建器類(lèi)型插入到協(xié)議中,而在想要新的布局類(lèi)型的事件中變得容易。如將在下面更詳細(xì)地描述的,所述協(xié)議使用了一組虛擬函數(shù),該組虛擬函數(shù)被定義為框構(gòu)建器的抽象類(lèi)。不同類(lèi)型的框構(gòu)建器可以不同地實(shí)施這些虛擬函數(shù)。從布局構(gòu)建器的觀點(diǎn)來(lái)看,這些函數(shù)中僅有少數(shù)函數(shù)看起來(lái)是和布局構(gòu)建器一樣的。如上面所指出的,它們的實(shí)現(xiàn)取決于框構(gòu)建器類(lèi)型而不同。當(dāng)布局構(gòu)建器貫穿HTML進(jìn)行處理時(shí),以及當(dāng)它遇到標(biāo)簽和其它內(nèi)容時(shí),它在相關(guān)聯(lián)的框構(gòu)建器上調(diào)用相應(yīng)的函數(shù)。當(dāng)布局構(gòu)建器移動(dòng)穿過(guò)特定標(biāo)簽的內(nèi)容時(shí),它可以在框構(gòu)建器上酌情調(diào)用這些不同的函數(shù),使框構(gòu)建器能執(zhí)行它的構(gòu)造,以使得相關(guān)聯(lián)的容器框被構(gòu)建并為顯示作準(zhǔn)備。然而,在各段HTML內(nèi)容之間移動(dòng)的過(guò)程由相關(guān)聯(lián)的個(gè)體的框構(gòu)建器控制,所述框構(gòu)建器明確地熟知所述內(nèi)容的結(jié)構(gòu)。在圖示的和描述的實(shí)施例中,協(xié)議300包括布局構(gòu)建器302、ContainerBox.BoxBuilder (容器框.框構(gòu)建器)304、ContainerBox. BoxBuilder 306 和容器框 308。如以上所討論的,布局構(gòu)建器302代表組織整個(gè)布局構(gòu)建過(guò)程的對(duì)象。布局構(gòu)建器302與由圖中的ContainerBox. BoxBuilder 304代表的各個(gè)框構(gòu)建器一起工作。如以上所指出的,ContainerBox. BoxBuilder是一種抽象類(lèi),其定義框構(gòu)建器的許多具體的子類(lèi)型要遵循的總合同(general contract)。它定義了布局構(gòu)建器302在不同的構(gòu)建步驟期間調(diào)用的一組虛擬回調(diào),這里被描繪為列舉的橢圓。
下表描述了在橢圓的列舉和它的相關(guān)聯(lián)的虛擬函數(shù)之間的關(guān)聯(lián)。在表的下面,描述了每個(gè)虛擬函數(shù)。
權(quán)利要求
1.一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其包含計(jì)算機(jī)可執(zhí)行指令,當(dāng)所述指令被執(zhí)行時(shí)實(shí)施一種軟件體系結(jié)構(gòu),包括 布局構(gòu)建器,被配置成組織結(jié)構(gòu)化文檔的順序布局處理; 框構(gòu)建器,其與布局構(gòu)建器相關(guān)聯(lián);和 一個(gè)或多個(gè)布局框; 其中所述框構(gòu)建器是代表不同框構(gòu)建器類(lèi)型的共同屬性和方法的類(lèi),各個(gè)框構(gòu)建器類(lèi)型被配置成構(gòu)建對(duì)應(yīng)的特定類(lèi)型的布局框。
2.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述一個(gè)或多個(gè)布局框包括一個(gè)或多個(gè)容器框和/或一個(gè)或多個(gè)行框,其中所述一個(gè)或多個(gè)容器框和一個(gè)或多個(gè)行框是布局框的子類(lèi)。
3.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述一個(gè)或多個(gè)布局框包括一個(gè)或多個(gè)容器框和/或一個(gè)或多個(gè)行框,其中所述一個(gè)或多個(gè)容器框和所述一個(gè)或多個(gè)行框是布局框的子類(lèi),以及其中容器框被配置成包含其它容器框和其它行框。
4.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述布局構(gòu)建器被配置成實(shí)例化所述一個(gè)或多個(gè)布局框。
5.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述布局構(gòu)建器被配置成與所述一個(gè)或多個(gè)框構(gòu)建器類(lèi)型通信,以有效于促使用要被再現(xiàn)的內(nèi)容填充所述一個(gè)或多個(gè)布局框。
6.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述結(jié)構(gòu)化文檔包括HTML文檔,并且所述布局構(gòu)建器實(shí)施用來(lái)使能順序布局處理的方法,其中所述方法包括以下至少一項(xiàng) 構(gòu)建一行文本的方法, 當(dāng)布局構(gòu)建器遇到打開(kāi)HTML標(biāo)簽時(shí)執(zhí)行的方法,或 當(dāng)布局構(gòu)建器遇到結(jié)束HTML標(biāo)簽時(shí)執(zhí)行的方法。
7.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述結(jié)構(gòu)化文檔包括HTML文檔,并且所述布局構(gòu)建器被配置成遇到打開(kāi)HTML標(biāo)簽并創(chuàng)建對(duì)應(yīng)的框構(gòu)建器類(lèi)型。
8.權(quán)利要求I所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述結(jié)構(gòu)化文檔包括HTML文檔,并且所述布局構(gòu)建器被配置成遇到打開(kāi)HTML標(biāo)簽并創(chuàng)建對(duì)應(yīng)的框構(gòu)建器類(lèi)型,以及其中所述布局構(gòu)建器被配置成遇到相關(guān)聯(lián)的關(guān)閉HTML標(biāo)簽并促使與對(duì)應(yīng)的框構(gòu)建器類(lèi)型相關(guān)聯(lián)的布局框被附連到顯示樹(shù)。
9.一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其包含計(jì)算機(jī)可執(zhí)行指令,當(dāng)所述指令被執(zhí)行時(shí)實(shí)施一種軟件體系結(jié)構(gòu),該軟件體系結(jié)構(gòu)包括 布局構(gòu)建器,被配置成組織HTML文檔的處理; 框構(gòu)建器,其與布局構(gòu)建器相關(guān)聯(lián),并且其代表框構(gòu)建器類(lèi)型的類(lèi);和 一組虛擬函數(shù),其被定義為框構(gòu)建器的類(lèi),并被配置成使能HTML文檔的順序的、非遞歸的處理。
10.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于初始化框構(gòu)建器并把所述框構(gòu)建器置于當(dāng)前的布局構(gòu)建過(guò)程的上下文中的函數(shù)。
11.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于請(qǐng)求布局構(gòu)建器要處理的下一個(gè)位置的函數(shù)。
12.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于請(qǐng)求已存在的框是否可被再次使用于給定的塊的函數(shù)。
13.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于請(qǐng)求已存在的框是否可被再次使用于給定的塊的函數(shù),和當(dāng)找到可再次使用的框時(shí)被調(diào)用的函數(shù)。
14.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于請(qǐng)求已存在的框是否可被再次使用于給定的塊的函數(shù),和當(dāng)沒(méi)有找到可再次使用的框時(shí)被調(diào)用的函數(shù)。
15.權(quán)利要求9所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述虛擬函數(shù)包括用于向父框構(gòu)建器通知相關(guān)聯(lián)的子框能夠被附連到最終得到的顯示樹(shù)的函數(shù)。
全文摘要
描述了布局處理技術(shù),所述布局處理技術(shù)允許實(shí)施結(jié)構(gòu)化文檔的處理,以及允許以順序的方式完成相關(guān)聯(lián)的布局。布局過(guò)程被分成可以順序地執(zhí)行的多個(gè)更小的步驟。在至少一些實(shí)施例中,布局構(gòu)建器被結(jié)合棧使用以控制在結(jié)構(gòu)化文檔的結(jié)構(gòu)層次的各層次上的布局執(zhí)行。不可變的數(shù)據(jù)結(jié)構(gòu)被使用,并且允許順序布局操作的并行執(zhí)行。在至少一些實(shí)施例中,可以完成布局序列的部分執(zhí)行來(lái)產(chǎn)生可用的數(shù)據(jù)。
文檔編號(hào)G06F17/21GK102804174SQ201180015838
公開(kāi)日2012年11月28日 申請(qǐng)日期2011年3月24日 優(yōu)先權(quán)日2010年3月25日
發(fā)明者E.N.韋塞羅夫, R.P.阿塔納索夫, M.J.喬爾森 申請(qǐng)人:微軟公司