專利名稱:確認可擴展標記語言文檔并實時報告模式違背情況的系統(tǒng)和方法
近年來各種標記語言已經廣為流行。作為其中的一種,可擴展標記語言XML是一種通用的標記語言,它提供了識別、交換和處理各種數據的方法。比如,XML用于產生的各種文檔,它們可用于各種應用程序。XML文件中的元素有相關聯(lián)的命名空間(namespace)和模式(schema)可擴展標記語言XML中,命名空間通常被用來作為每個XML文檔的唯一標識。每個XML文檔通過使用命名空間使得程序能夠容易地區(qū)分出與該文檔相關的XML類型。這個唯一的命名空間也同樣支持區(qū)分來自不同文件又恰好有著相同名字的標記元素。
在XML環(huán)境中,XML模式提供了描述和驗證數據有效性的途徑。模式說明了什么樣的元素和屬性可用來描述在XML文檔中的內容,元素可出現(xiàn)在哪里,哪些元素可出現(xiàn)在其他元素內。模式的使用保證了文件結構的一致性。模式可由用戶產生,通常由像XML這樣的標記語言提供支持。通過使用支持模式的XML編輯器,用戶可以操縱XML文件,并依從用戶創(chuàng)建的模式產生XML文檔。
通常,當插入XML文檔的元素和標簽有錯時,XML編輯器在把錯誤克服之前將拒絕用戶繼續(xù)XML文檔的制作。這種情況下,如果與模式不符,XML編輯器往往不允許對XML文檔進行編輯,從而編輯器無法提供自由格式編輯。編輯器的另一選擇是讓用戶產生整篇XML文檔,然后再從整體上驗證XML文檔的有效性。那么,驗證時所出現(xiàn)的錯誤需要找出并予以改正。
本發(fā)明旨在能夠進行可擴展標記語言(XML)文檔有效性確認,并在用戶編輯該文檔時,實時的報告模式模式違背情況(schema violation)。字處理器具有相關聯(lián)的可擴展標記語言(本地XML(native XML))。當用戶將非本地XML模式文件與XML文檔相關聯(lián)的時候,字處理器就使用帶有確認引擎(validationengine)的非本地XML模式來確認XML文檔中的非本地XML元素。當用戶將來自該模式的非本地XML元素插入XML文檔中時,平行樹(parallel tree)作為確認引擎的對象由字處理器來維護。該樹包含與插入到XML文檔中非本地XML元素相應的節(jié)點。該平行樹幫助防止本地XML標記干擾XML文檔中的非本地XML標記。盡管非本地XML標記與本地XML標記共存于相同的XML文檔中,但該平行樹還是允許獨立于本地XML標記而來單獨確認非本地XML標記。
在一個實施例中,每次將非本地XML元素插入到XML文檔中時,取決于插入非本地XML元素的上下文,在平行樹中的恰當位置創(chuàng)建了相應的節(jié)點。相應的,每次從XML文檔中刪除非本地XML元素時,相應的節(jié)點也從平行樹中刪除了。
除了追蹤非本地XML元素之外,平行樹還追蹤著非本地XML元素的文本內容。非本地XML元素的內容存在于XML文檔中,而不是平行樹中,但平行樹仍保持到元素的鏈接。如果需要,為平行樹有效性確認的緣故,平行樹會把內容檢索出來。然后,該確認過程就可以確認該平行樹節(jié)點間的結構關系,以及每個節(jié)點對其文本內容所施加的內容類型限制。
平行樹實時的反映了XML文檔中的變化,并允許對非本地XML標記的實時確認。當在非本地XML標記或XML文檔的文本內容發(fā)生變化之后出現(xiàn)空閑瞬間時,相應于XML文檔中發(fā)生變化區(qū)域的平行樹的子樹由確認引擎來確認。若非本地XML或文本內容的變化有一個或多個錯誤,則確認引擎就將該錯誤通知字處理器。然后,依照用來處理此類錯誤的用戶接口指令,字處理器在XML文檔以及平行樹中均亮顯該錯誤。
圖1闡明了可用于本發(fā)明一個范例實施例中的范例計算裝置。
圖2是實施本發(fā)明范例環(huán)境的方框圖。
圖3是依照本發(fā)明的XML文檔和平行樹的范例方框圖。
圖4是依照本發(fā)明的XML文檔和包含錯誤平行樹的范例方框圖。
圖5是依照本發(fā)明,確認XML文檔并報告錯誤的范例過程邏輯流程圖。
圖6是依照本發(fā)明,對XML文檔中的變化進行定位和處理的范例過程邏輯流程圖。
圖7是依照本發(fā)明,確認XML文檔的范例過程邏輯流程圖。
圖8是依照本發(fā)明,顯示XML文檔和平行樹中錯誤的范例過程邏輯流程圖。
具體實施例方式
在說明書和權利要求書中,除非上下文明確規(guī)定,下列術語均采用這里所述的明確意義。
術語“標記語言”或“ML”是指文檔中的特別代碼的語言,它指定文檔的某些部分如何由應用程序解釋。在字處理器文件中,標記元素可與指定元素內容如何顯示或安排的特定格式相關聯(lián)。在另外實施例中,如其它XML文檔,所述標記可能旨在描述數據而不涉及顯示問題。
術語“本地可擴展標記語言”或“本地XML”指與字處理器應用程序相關聯(lián)的標記語言元素及與字處理器應用程序相關聯(lián)的模式。
術語“非本地可擴展標記語言”或“非本地XML”指用戶或其它應用程序創(chuàng)建,并遵從不同于本地XML模式的模式的標記語言元素。
術語“元素”是指XML文檔的基本單位。元素可包含屬性、其它的元素、內容和其它XML文檔的塊料(building blocks)。
術語“標簽”是指插入到XML文檔中描繪文檔元素的命令。每個元素通常不超過兩個標簽開始標簽和結束標簽。具有一個標簽的空元素(無內容)也是允許的。
標簽之間的內容作為元素的“子”(或后代)。因此,嵌入到元素內容中的其它元素稱為“子元素”或“子節(jié)點”或元素。直接嵌入到元素內容中的文本作為元素的“子文本節(jié)點”。子元素和和元素中的文本一起組成了該元素的“內容”。
術語“屬性”是指被設定為特定值并與元素相關聯(lián)的附加性質。元素可具有任意數量的與其相關聯(lián)的屬性,包括沒有屬性。屬性被用來將附加信息與不包含在元素內容中的元素相關聯(lián)。
示例性操作環(huán)境參照圖1,用來實施本發(fā)明的一個范例系統(tǒng)包含計算裝置,如計算裝置100?;九渲冒摼€108內的那些部件。在基本配置中,計算裝置100通常包含至少一個處理單元102和系統(tǒng)存儲器104。取決于計算裝置的準確配置和類型,系統(tǒng)存儲器可為易失性的(如RAM)、非易失性的(如ROM、閃存等)或這兩者的某種組合。系統(tǒng)存儲器104通常包含操作系統(tǒng)105,一個或多個應用程序106,可以包含程序數據107。在一個實施例中,應用程序106包含具帶有XML編輯器122的字處理器應用程序120。在這種配置中,字處理器應用程序120能在自由式編輯環(huán)境中打開和編輯XML文檔。盡管在這里是以字處理器應用程序120來闡明本發(fā)明的,但本發(fā)明對其它類型的應用程序也有相同的適用性,這一點對本領域的熟練技術人員來說將是顯而易見的。
計算裝置100可具有附加的特征和功能特性。例如,計算裝置100還可包含附加數據存儲裝置(可移動和/或不可移動),如像磁盤、光盤或磁帶。這類附加存儲器在圖1中由可移動存儲器109和不可移動存儲器110來表示。計算機存儲媒體可包括易失性的和非易失性的、可移動的和不可移動的媒體,以任何方法或技術實施信息的存儲,如計算機可讀指令、數據結構、程序模塊或其它數據。系統(tǒng)存儲器104、可移動存儲器109和不可移動移動存儲器110均是計算機存儲媒體的例子。計算機存儲媒體包擴,但不局限于,RAM、ROM、EEPROM、閃存或其它存儲器技術、CD-ROM、數字多用途關盤(DVD)或其它光存儲器、盒式磁帶、磁帶、磁盤存儲器或其它磁存儲裝置,以及能用來保存所需信息并能由計算裝置100存取的其它任何媒體。任何這樣的計算機存儲媒體可以是裝置100的一部分。計算裝置100也可具有諸如鍵盤、鼠標、書寫筆、語音輸入裝置、觸摸輸入裝置等這樣的輸入裝置112。計算裝置100也可包含諸如顯示器、揚聲器、打印機等這樣的輸出裝置114。這些裝置是本領域所熟知的,這里就不必贅述了。
計算裝置100也可包含通信連接器116,以使其能同其它計算裝置118進行通信,比如在網絡上進行通信。通信連接器116是通信媒體的一個例子。通信媒體通??捎捎嬎銠C可讀指令、數據結構、程序模塊或已調制數據信號中的其它數據,諸如載波或其它傳送機制來具體體現(xiàn),該通信媒體包含任何信息傳遞媒體。術語“已調制的數據信號”意指將其一個或多個特性設置或改變?yōu)槟軐π盘栔行畔⑦M行編碼的形式。作為例子,但不局限于此,通信媒體包括諸如有線網絡或直線連接(direct-wired connection)這樣的有線媒體,以及諸如聲音、RF、紅外線和其它形式的無線媒體。這里用到的術語“計算機可讀媒體”既包含存儲媒體,也包含通信媒體。
圖2是實施本發(fā)明范例環(huán)境的方框圖。圖2所示的范例環(huán)境200包括字處理器120、XML文檔210、非本地XML模式215、XML確認引擎225和數據結構230。數據結構230包括錯誤數據235、平行樹220和同步數據240。
在一個實施例中,字處理器120具有其自身的名空間(namespace)和用于與字處理器120相關聯(lián)的XML文檔的模式。由字處理器120模式定義的標簽和屬性的設置可將XML文檔的格式定義到這樣一種程度,以致可將其視為自己的標記語言,即字處理器標記語言(本地XML)。本地XML得到字處理器120的支持,它可遵從其它標記語言的規(guī)則,同時創(chuàng)建自身的進一步規(guī)則。本地XML提供包含豐富顯示信息的標記語言,這些顯示信息通常與諸如文本格式(如粗體、斜體、下劃線)、段落格式(如行間距、對齊(justification)和類似格式),列表格式(如表格行和列)和類似的格式這樣的字處理相關聯(lián)。然后,本地XML可與將更多實質結構加到文檔的用戶定義模式一起使用。
依照本發(fā)明,本地XML和非本地XML元素可共存于XML文檔210中,并可分別確認。非本地XML元素與非本地XML模式215相關聯(lián)。當非本地XML元素被確認時,檢查它是否符合非本地XML模式215。如前面所述,模式闡明了什么標簽和屬性被用來說明XML文檔中的內容,每個標簽放在哪里,什么樣的內容類型可在元素中出現(xiàn),哪個元素可在其它元素中出現(xiàn),確保文件以相同的方式組織。因此,當非本地XML元素按非本地XML模式215中所述組織時,該元素是有效的。在下面圖7的討論中進一步對非本地XML元素的確認進行了說明。
XML確認引擎225是配置為維持元素樹并依照某個模式驗證該元素樹的模塊。簡言之,可傳遞給XML確認引擎225定義元素樹的對象,如相應于XML文檔210中元素的對象,模式指針,如指向諸如非本地XML模式215者,也可能是一個或多個元素樹元素的內容。有了該信息,XML確認引擎225就依照模式驗證元素樹,并將任何違背信息報告給呼叫過程(calling process)。
在例程運作時,依照本發(fā)明的一個實施例,字處理器120維持了幾個可參與到非本地XML元素確認中的數據結構230。平行樹220是包含相應于XML文檔210中每個非本地XML元素節(jié)點的元素樹。在一個實施例中,平行樹220知悉XML文檔210的每個元素和內容,而且XML文檔210也知悉平行樹220的節(jié)點。因此,用戶可亮顯平行樹220中的節(jié)點,而且相應于該節(jié)點的元素也在XML文檔210中亮顯了。與之相似,亮顯XML文檔210的部分會導至平行樹220的相應節(jié)點被亮顯。在下面圖3的討論中進一步對范例平行樹進行說明。
錯誤數據235包括當出現(xiàn)與XML確認引擎225確認的元素相關的錯誤時從XML確認引擎225返回到字處理器120的數據。錯誤數據235也可包含字處理器120顯示錯誤通知的信息。在一個實施例中,當出現(xiàn)確認錯誤時,字處理器120就報告四個單獨的錯誤類型。這四個錯誤類型包括位置錯誤、無效內容錯誤、內容缺失錯誤和無效屬性錯誤。除了提到的這四個錯誤,也可以使用其它不同類型的錯誤。將錯誤指定為特定錯誤類型簡化了修正錯誤所必須的分析。錯誤數據235也可包含進一步與錯誤相關的信息,如關于可以如何修正顯示給用戶的錯誤的建議。錯誤信息的顯示及關系將結合圖8進一步說明。
同步數據包含用來將平行樹220與XML文檔210進行實時同步化的數據。在一個實施例中,同步數據240包含與XML文檔210中的每個元素相關聯(lián)的標識符表。所述標識符唯一地標識出XML文檔210中的每個元素,因而也唯一地標識出平行樹220中的每個節(jié)點。同步數據240幫助使出現(xiàn)在XML文檔210中的變化和平行樹220實現(xiàn)同步,包括在平行樹220中添加或刪除節(jié)點。包含添加節(jié)點到平行樹220的步驟范例將結合圖6做說明。
圖3所示是可依照本發(fā)明維護的范例XML文檔210和平行樹220。XML文檔210既包含本地XML元素,也包含非本地XML元素。標記語言中的元素通常包括打開標簽(由“<”和“>”表示)、某些內容和關閉標簽(由“</”和“>”表示)。在本例中,與本地XML模式相關聯(lián)的標簽包含標簽中的“w”(如元素302),與非本地XML模式相關聯(lián)的標簽包含標簽中的“r”(如元素304)。與本地XML相關聯(lián)的標簽視作與字處理器的名空間(字處理器名空間)相關聯(lián)。相對地,與非本地XML相關聯(lián)的標簽作為與不同的名空間相關聯(lián),在本例中為“履歷”名空間。XML文檔210的元素可進一步包含內容。例如,“工作”包含在“目標”元素中,“123主要”包含在“街道”元素中。“街道”元素包含在“地址”元素中。對這些元素進行定義,依照的是相應于以前由用戶或其它應用程序給出的履歷名空間(如履歷模式)的非本地XML模式?!皐”和“r”前綴是作為各名空間的XML簡潔符號。
平行樹220包含XML文檔210中每個非本地XML元素的節(jié)點(如節(jié)點322、324、326)。在一個實施例中,平行樹220由與字處理器120分離的確認引擎225來維持(見圖2)。平行樹220實時地隨著XML文檔210的變化而更新。當平行樹220按非本地XML模式215確認XML文檔210時,平行樹220允許字處理器120完全忽略本地XML元素。換言之,當為了確認有效性把平行樹220提供給確認引擎時,非本地XML元素對對的非本地XML模式(?元素)是實際上透明的。然后,平行樹220可對任何本地XML元素單獨確認,結合圖7對這一點將做進一步說明。
如圖所示,平行樹220包含與每個非本地XML元素相關聯(lián)的內容。在另一個實施例中,在平行樹被傳遞到確認引擎225進行確認之前,所述內容不復制到平行樹220中。然而,在另一個實施例中,被復制到平行樹220中的內容限于與要確認平行樹220的部分相關聯(lián)的內容。平行樹220的確認結合圖7做進一步說明。
圖4是范例XML文檔410及包含錯誤的平行樹420的方框圖。XML文檔410和平行樹420類似于圖3所示的XML文檔210和平行樹220,然而,錯誤(關于非本地XML模式215)已經被添加到非本地XML標記中。該錯誤由錯誤元素432表示,是郵政編碼。依照非本地XML模式215,該“郵碼”(“zip”)元素是設定成地址的子,或“街道”(“street”)元素兄弟兄弟(sibling)。然而,在所示的例子中,由于“郵碼”被放置成“街道”的子,所以該“郵碼”元素是無效的。依照本發(fā)明,平行樹420反映出的是“郵碼”元素被作為“街道”元素的子插入。因此,當依照非本地XML模式215確認平行樹420(或包含“街道”元素的某些相關子樹)時,錯誤被返回。在本例中,字處理器120將XML文檔410中的錯誤用下劃線標識,然而,也可使用其它的顯示指示符來標示該錯誤。
錯誤的標示也包含在平行樹420中,其中,圖標442表示“郵碼”節(jié)點422有相關聯(lián)的錯誤。在另一個實施例中,其它顯示指示器可用在平行樹420中來表示與節(jié)點相關聯(lián)錯誤的存在。根據所示的例子,右擊XML文檔410中加下劃線的元素(如錯誤元素432)產生錯誤顯示430(如右擊菜單)。錯誤顯示430列出了有關錯誤的詳細信息,如錯誤的類型。錯誤顯示430也可包含給用戶試圖修正錯誤的建議動作。該建議動作可以是交互式的,允許用戶從一列可能的錯誤解決方案中挑選。
另外,在圖標442上停留(hovering)可顯示給用戶其它信息,如工具提示440?!肮ぞ咛崾尽蓖ǔV笇⒏郊有畔⑻峁┙o用戶的非交互式顯示元素。例如,所示的工具提示提供文本通知“郵碼不能在街道內”。在一個實施例中,為顯示錯誤顯示430或者工具提示440,可以選擇圖表442或者錯誤元素432,或在它們上面停留。涉及在XML文檔410中及平行樹420中顯示錯誤指示符的范例過程在圖8的討論中說明。
探測、確認知錯誤報告圖5是依照本發(fā)明,用來確認XML文檔和報告模式違背情況的范例過程的邏輯流程圖。過程500在方塊501處開始,其中XML文檔正被編輯且發(fā)生了變化?!白兓敝冈赬ML文檔中插入、修正或刪除XML元素,或改變非本地XML元素的文本內容。響應該變化,在方塊502處繼續(xù)過程。
在方塊502處,XML文檔所發(fā)生變化在XML文檔中被定位。某些變化,如添加新元素,可能需要進一步處理來將相應節(jié)點填加到平行樹上。結合圖6進一步說明用來定位和處理XML文檔中變化的范例過程。過程前進到方塊503。
在方塊503,XML文檔中改變的部分被標記為“臟”?!芭K”是指XML文檔中有待確認的或由于所述變化其有效性不再確保的部分。標識符或其它的指示符可與XML文檔發(fā)生變化的部分相關聯(lián)。在一個實施例中,任何已經改變、被刪除或被添加元素的親(parent)父被標記為臟。當過程500前進到確認臟部分時,確認引擎就驗證所述的親父及所述親的子。過程在方塊504處繼續(xù)。
在方塊504處,相應于XML文檔中變化部分的平行樹節(jié)點也被標記為“臟”。標識符或其它的指示符可與相應變化發(fā)生處的平行樹節(jié)點相關聯(lián)。在一個實施例中,與XML文檔中的每個元素和平行樹中的每個節(jié)點相關聯(lián)的唯一標識符被標記為臟,因此,同時將XML文檔的部分和平行樹的節(jié)點標記為臟。過程在決定方塊505處繼續(xù)。
在決定方塊505處,做出了撰寫或編輯XML文檔的用戶是否已達到空閑或超時(timeout)點的決定??臻e是指用戶當前沒有提供用戶輸入到字處理器的時間點。超時是指在預定的時間段內沒有出現(xiàn)空閑狀態(tài)的情形。若經過了足夠時間,則將會出現(xiàn)超時條件。過程在方塊505處循環(huán),直到出現(xiàn)空閑狀態(tài)或超時條件。當達到空閑狀態(tài)或出現(xiàn)超時條件時,過程前進到方塊506。
在方塊506處,所述的一個或多個平行樹臟節(jié)點由確認引擎來確認。平行樹是確認引擎的對象或是鏈接到確認引擎,從而使該樹不必傳遞到確認引擎來確認。確認平行樹臟節(jié)點的范例過程結合圖7做進一步說明。過程在決定方塊507處繼續(xù)。
在決定方塊507處,依據由確認引擎返回的錯誤數據,做出XML文檔的非本地XML元素中是否存在錯誤的決定。確認引擎將錯誤數據返回到字處理器中,表示確認引擎已分析的平行樹中每個節(jié)點的有效性。在一個實施例中,錯誤數據包含出現(xiàn)在字處理器的錯誤類型。若不存在錯誤,則過程移動到方塊509,過程終止。若存在誤差,過程在方塊508處繼續(xù)。
在方塊508處,依據XML文檔和平行樹中的顯示指示符,用戶被告知非本地XML確認元素中的錯誤。將出現(xiàn)的錯誤報告給用戶的范例過程結合圖8做進一步說明。過程前進到方塊509,過程終止。
圖6是依照本發(fā)明,定位和處理XML文檔中變化范例過程的邏輯流程圖。當圖5所示過程500進入到方塊502中時,過程600在方塊601處進入。過程在方塊602處繼續(xù)。
在方塊602處,確定XML文檔已改變部分的親父。例如,在圖4中,XML文檔410中的“街道”元素是“郵碼”元素432的親父。在一個實施例中,確定了父,以使包含父和該父后代的平行節(jié)點子樹可被標記為臟。因為除了已變化節(jié)點的直接父以外,變化通常不影響元素的有效性,所以確認父和父的后代仍舊確保整個XML文檔是有效的。確定父也幫助將平行樹與XML文檔進行同步化。然后,父可用作XML文檔中變化位置的指示符。在一個實施例中,與變化元素的父相關聯(lián)的標識符被保存在圖2所示的同步數據240中。過程前進到方塊603。
在方塊603處,字處理器確定了正在變化元素的最接近的兄弟兄弟。例如,在圖3中,“目標”元素和“地址”元素視作兄弟兄弟。確定最近的兄弟幫助將平行樹和XML文檔進行同步化。該最近的兄弟提供了XML文檔中變化位置的第二指示符。在一個實施例中,與已變化元素父相關聯(lián)的標識符被保存在圖2所示的同步數據240中。在另一個實施例中,也確定了最近的兄弟是在XML文檔中正變化元素的上面還是下面。過程在確定方塊604處繼續(xù)。
在決定方塊604處,做出變化是否需要在平行樹中創(chuàng)建新節(jié)點的決定。當在XML文檔中創(chuàng)建新的非本地XML元素時,需要新節(jié)點。實時創(chuàng)建該新節(jié)點來保持XML文檔與平行樹的同步化。當不需要新節(jié)點時,過程移動到方塊609,過程返回到過程500的方塊503。然而,若需要新節(jié)點,則過程移動到方塊605。
在方塊605處,創(chuàng)建相應于XML文檔中新元素的標識符。該標識符唯一地標識了XML文檔中的元素。過程在方塊606處繼續(xù)。
在方塊606處,在平行樹中創(chuàng)建無父節(jié)點。該無父節(jié)點當前沒有用平行樹中的父來標識。過程在方塊607處繼續(xù)。
在方塊607處,涉及在XML文檔中創(chuàng)建元素的標識符與無父節(jié)點相關聯(lián)。將該標識符與無父節(jié)點相關聯(lián)使字處理器能將該節(jié)點與XML文檔中新元素的位置聯(lián)系起來。在一個實施例中,已經確定了對XML文檔中新元素的父和最近的兄弟,因此,也確定了平行樹中的父和最近的兄弟。過程在方塊608處繼續(xù)。
在方塊608處,平行樹中相應于XML文檔中新元素的父元素的父節(jié)點被指示認領無父節(jié)點。然后,該新節(jié)點顯示在平行樹中的正確位置,使XML文檔與平行樹同步。過程前進到方塊609,返回到過程500的方塊503。
圖7是依照本發(fā)明,確認XML文檔范例過程的邏輯流程圖。當圖5所示的過程500進入到方塊506中時,過程700在方塊701處進入。過程在方塊702處繼續(xù)。
在方塊702處,與待確認非本地XML元素相關聯(lián)的內容被復制到平行樹。在一個實施例中,XML文檔中的內容在初始時未包含在平行樹中,若該內容包含在平行樹中,平行樹所需的存儲空間將幾乎是XML文檔所需的存儲空間。只在確認前將內容復制到平行樹使所需的存儲空間最小化。在另一個實施例中,復制到平行樹的內容局限于與標記為臟的非本地XML元素相關聯(lián)的內容。過程在方塊703處繼續(xù)。
在方塊703處,確認引擎按其非本地XML模式來確認標記為臟的節(jié)點和其相關聯(lián)的內容。該非本地XML模式聲明什么標簽和屬性被用來說明XML文檔的非本地XML元素中的內容,每個標簽可在何處,什么內容可接受,以及哪個元素可出現(xiàn)在其它元素中。當平行XML樹遵從非本地XML模式時,該平行XML樹是有效的。在完成確認后,過程前進到方塊704。
在方塊704處,為確認目的而包含在平行樹中的內容被從平行樹中刪除。將內容從平行樹中刪除就進一步最小化了平行樹所需的存儲空間。過程前進到方塊705,返回到圖5所示的過程500的方塊507。
圖8是依照本發(fā)明,顯示XML文檔中和平行樹中錯誤范例過程的邏輯流程圖。當圖5所示過程500進入方塊508中時,過程800在方塊801處進入,并已確定有錯誤存在于XML文檔的非本地XML元素中。過程在方塊802處繼續(xù)。
在方塊802處,由確認引擎認定有錯誤的元素在XML文檔中加了下劃線。應當理解,其它的顯示指示符(如粗體、斜體、波浪線(squiggly line)等)可用來指定XML文檔中具有錯誤的元素。過程在方塊803處繼續(xù)。
在方塊803處,平行樹中相應于XML文檔錯誤元素的節(jié)點被做了標記。在一個實施例中,圖標被置于該節(jié)點的附近來表示相應于該節(jié)點的元素有錯誤。在一個實施例中,對出現(xiàn)在與錯誤元素相關聯(lián)處的錯誤類型,該圖標是特定的。過程在確定方塊804處繼續(xù)。
在確定方塊804處,做出用戶是否右擊了在XML文檔中亮顯的錯誤的決定。若沒有發(fā)生右擊,過程就前進到方塊806。然而,若發(fā)生了右擊,過程就在方塊805處繼續(xù)。
在方塊805處,對右擊做出響應,關于錯誤的詳細信息及修正錯誤的指令將顯示呈現(xiàn)給用戶。在另一個實施例中,其它的用戶輸入,而不是右擊,可用來啟動該錯誤顯示。該錯誤顯示在以上圖4的討論中做了進一步說明。過程前進到確定方塊806。
在決定方塊806,做出用戶是否將鼠標指點器停留在平行樹中的圖標上的決定。若用戶決定不將鼠標指點器停留在錯誤上,則過程前進到方塊808,返回到圖5所示過程500的方塊509中。當鼠標指點器停留在圖標上時,過程在方塊807處繼續(xù)。
在方塊807處,響應鼠標指點器在平行樹的圖標上的停留,將工具提示顯示給用戶。在一個實施例中,工具提示的文本提供所發(fā)生錯誤的簡單陳述。例如,若特定的元素必須包含內容,工具提示的文本可能會是“本元素不能為空”。在一個實施例中,其它的用戶輸入,而不是用鼠標指點器停留在圖標上,可用來顯示工具提示。圖4示出了范例圖標和工具提示。過程前進到方塊808,返回到圖5所示過程500的方塊509。
上述的說明、例子和數據提供了本發(fā)明文件的制造和使用的完整說明。由于本發(fā)明的許多實施例可在不背離本發(fā)明主旨和范圍的情況下來實施,所以本發(fā)明可見于所附權利要求書。
權利要求
1.一種用來確認和報告可擴展標記語言(XML)文檔模式違背情況的方法,其中XML文檔包含本地XML和非本地XML,所述方法包含定位XML文檔中非本地XML元素的變化;標記XML文檔的一部分以表示與所述XML文檔部分相關的變化已經發(fā)生;標記平行樹中的節(jié)點以表示變化已經發(fā)生,其中所述節(jié)點對應于XML文檔中發(fā)生變化的部分;按相應的非本地XML模式來確認平行樹的節(jié)點;決定非本地XML元素中的錯誤是否來自響應確認節(jié)點供給的錯誤數據;以及若出現(xiàn)錯誤,則在XML文檔中和平行樹中顯示錯誤通知。
2.如權利要求書1所述的方法,其特征在于,所述定位非本地XML元素的變化進一步包括識別每個發(fā)生變化的非本地XML元素的父元素;識別每個發(fā)生變化的非本地XML元素的最近兄弟元素。
3.如權利要求書1所述的方法,其特征在于,進一步包括當在XML文檔中創(chuàng)建新的非本地XML元素時,在平行樹中創(chuàng)建新的節(jié)點。
4.如權利要求書3所述的方法,其特征在于,所述創(chuàng)建新節(jié)點進一步包括創(chuàng)建相應于新的非本地XML元素的標識符,其中新的非本地XML元素的父元素和兄弟元素是可從標識符來確定的;在平行樹中創(chuàng)建無父節(jié)點;將所述標識符與所述無父節(jié)點相關聯(lián);指示一相應于父元素的父節(jié)點認領所述無父節(jié)點。
5.如權利要求書1所述的方法,其特征在于,所述確認平行樹的節(jié)點進一步包含將內容復制到平行樹,其中該內容與XML文檔中發(fā)生變化的部分相關聯(lián);按相應的非本地XML模式來確認包含內容的節(jié)點;從平行樹中刪除所述內容,以使平行樹的存儲空間最小化。
6.如權利要求書5所述的方法,其特征在于,所述按相應的非本地XML模式來確認包含內容的節(jié)點包括根據非本地XML模式,用XML確認引擎來檢查平行樹。
7.如權利要求書1所述的方法,其特征在于,進一步包括在確認平行樹之前,確定超時或空閑條件何時出現(xiàn)。
8.如權利要求書1所述的方法,其特征在于,所述顯示錯誤通知進一步包括根據第一顯示指示符,標示XML文檔中發(fā)生錯誤的部分;根據第二顯示指示符,標示平行樹中相應于XML文檔中發(fā)生錯誤部分的節(jié)點。
9.如權利要求書8所述的方法,其特征在于,相應于所述第一顯示指示符和第二顯示指示符中至少一個的用戶輸入產生錯誤顯示,該錯誤顯示提供關于所述錯誤的交互式信息。
10.如權利要求書8所述的方法,其特征在于,相應于第一顯示指示符和第二顯示指示符中至少一個的用戶輸入產生工具提示,該工具提示提供關于所述錯誤的文本信息。
11.一種具有計算機可執(zhí)行部件的計算機可讀媒體,其特征在于,它包括第一部件,用于創(chuàng)建包含與第一XML模式相關聯(lián)的第一類型元素及與第二XML模式相關聯(lián)的第二類型元素的可擴展標記語言(XML)文檔部件,所述第一部件被配置為產生顯示,指示第一類型元素中的至少一個違背了所述第一XML模式;第二部件,用于存儲節(jié)點部件每個節(jié)點與所述第一部件中的相應元素相關聯(lián),所述第一部件和所述第二部件是同步的;第三部件,用于確認元素的部件所述第三部件被安排為通過響應確認的違背信息,將錯誤數據返回到所述第一部件。
12.如權利要求書11所述的計算機可讀媒體,其特征在于,進一步包括相應于錯誤數據的第四部件,其中所述錯誤數據被安排為當用戶輸入與在XML文檔和第二部件中的至少一個中顯示的指示符相互作用時被創(chuàng)建。
13.如權利要求書12所述的計算機可讀媒體,其特征在于,所述第四部件被進一步安排為顯示有關相應于錯誤數據的錯誤的信息,包括錯誤類型、修正錯誤的指令和錯誤聲明中的至少一種。
14.一種用數據結構編碼的計算機可讀媒體,其特征在于,它包括第一數據結構,包含可擴展標記語言(XML)元素;第二數據結構,包含相應于所述第一數據結構元素的元素樹;和顯示指示符,在所述第一數據結構中元素及所述第二數據結構中的相應節(jié)點附近,該顯示指示符表示出確認錯誤。
15.如權利要求書14所述的計算機可讀媒體,其特征在于,所述顯示指示符被安排為與用戶輸入交互,以進一步啟動錯誤顯示,提供關于確認錯誤的交互信息。
16.如權利要求書14所述的計算機可讀媒體,其特征在于,所述顯示指示符被安排為與用戶輸入交互,以進一步初啟動工具提示,提供關于確認錯誤文本信息。
17.一種計算機可讀媒體,具有用來確認和報告可擴展標記語言(XML)文檔模式違背情況的計算機可執(zhí)行指令,其特征在于,所述XML文檔包含本地XML和非本地XML,所述指令包括定位XML文檔中的非本地XML元素的變化;若所述變化對應于XML文檔中新的非本地XML元素的創(chuàng)建,則在平行樹中創(chuàng)建新節(jié)點;將XML文檔的一部分標記為受所述變化影響;在平行樹中標記節(jié)點以表示已經有變化發(fā)生,其中所述節(jié)點對應于XML文檔中被所述變化所影響的部分;按相應的模式確認平行樹中已標記的節(jié)點;確定非本地XML元素中的錯誤是否來自響應確認節(jié)點的供應錯誤數據;和如果是這樣,那么就在XML文檔和平行樹中顯示錯誤通知。
18.如權利要求書17所述的方法,其特征在于,所述定位非本地XML元素的變化進一步包括標識每個非本地XML元素中發(fā)生變化的父元素;標識每個非本地XML元素中發(fā)生變化的最近兄弟元素。
19.如權利要求書17所述的方法,其特征在于,所述創(chuàng)建新節(jié)點進一步包括創(chuàng)建相應于新的非本地XML元素的標識符,其中從該標識符確定新的非本地XML元素的父元素和兄弟元素;在平行樹中創(chuàng)建無父節(jié)點;將標識符與無父節(jié)點相關聯(lián);指示一對應于父元素的父節(jié)點認領所述無父節(jié)點。
20.如權利要求書17所述的方法,其特征在于,所述確認平行樹節(jié)點進一步包括將內容復制到平行樹,其中所述內容對應于XML文檔的所述部分;按相應的非本地XML模式確認包含所述內容的節(jié)點;和將內容從平行樹中刪除,以使平行樹的存儲空間最小化。
21.如權利要求書17所述的方法,其特征在于,所述顯示錯誤通知進一步包括根據所述第一顯示指示符,標示XML文檔中出現(xiàn)錯誤的部分;根據所述第二顯示指示符,標示相應于XML文檔中出現(xiàn)錯誤部分的平行樹節(jié)點。
22.如權利要求書21所述的方法,其特征在于,相應于所述第一顯示指示符及所述第二顯示指示符中的至少一個的用戶輸入產生錯誤顯示,提供關于該錯誤交互信息。
23.如權利要求書21所述的方法,其特征在于,相應于所述第一顯示指示符及所述第二顯示指示符中的至少一個的用戶輸入產生工具提示,提供關于該錯誤文本信息。
全文摘要
用來確認可擴展標記語言(XML)文檔并實時報告模式違背情況的系統(tǒng)和方法。維護包含對應于XML文檔非本地XML元素的節(jié)點的平行樹。當XML文檔發(fā)生變化時,相應于該變化的非本地XML元素就被做標記。按相應于非本地XML標記的XML模式來確認相應于已標記非本地XML元素的節(jié)點。然后,根據XML文檔和平行樹中的顯示指示符,向用戶報告與非本地XML標記中錯誤相對應的元素和節(jié)點。
文檔編號G06F15/16GK1472645SQ03145220
公開日2004年2月4日 申請日期2003年6月25日 優(yōu)先權日2002年6月27日
發(fā)明者B·M·瓊斯, M·薩維茨基, R·A·利特爾, B M 瓊斯, 利特爾, 幕 申請人:微軟公司