欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在html文檔中包括可訪問(wèn)角色和狀態(tài)信息的方法和系統(tǒng)的制作方法

文檔序號(hào):6562923閱讀:96來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):在html文檔中包括可訪問(wèn)角色和狀態(tài)信息的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及超文本標(biāo)記語(yǔ)言文檔,更具體地說(shuō),涉及在常規(guī)超文本標(biāo)記語(yǔ)言文檔中包括諸如角色和狀態(tài)信息之類(lèi)的可訪問(wèn)元數(shù)據(jù)的系統(tǒng)和方法。
背景技術(shù)
超文本標(biāo)記語(yǔ)言(HTML)從標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)的子集衍生而來(lái),并定義了用于創(chuàng)建HTML文檔的創(chuàng)作語(yǔ)言。在計(jì)算設(shè)備上執(zhí)行的Web瀏覽軟件程序使得計(jì)算機(jī)用戶可以在萬(wàn)維網(wǎng)上訪問(wèn)HTML文檔并與之交互。為了促進(jìn)更為交互的體驗(yàn),HTML文檔可以包括由角色和可選狀態(tài)信息指定的動(dòng)態(tài)對(duì)象,如下拉菜單、樹(shù)視圖、復(fù)選框以及其他圖形用戶界面組件。
通常,角色信息是預(yù)定的并描述了特定對(duì)象功能的特征。例如,角色可以包含復(fù)選框、菜單、按鈕、窗體框架或其他桌面組件。狀態(tài)信息與給定的角色關(guān)聯(lián)并定義了該角色的當(dāng)前情況。例如,實(shí)現(xiàn)復(fù)選框角色的動(dòng)態(tài)對(duì)象可以具有選中和取消選中的關(guān)聯(lián)狀態(tài);實(shí)現(xiàn)菜單角色的對(duì)象可以具有展開(kāi)或折疊、可見(jiàn)或隱藏等狀態(tài)。因此,可從其為關(guān)聯(lián)對(duì)象指定給定狀態(tài)的有效狀態(tài)集通常取決于相應(yīng)的角色。
HTML規(guī)范直接支持某些對(duì)象(如復(fù)選框)。但是,在純HTML中不直接支持動(dòng)態(tài)更改以響應(yīng)用戶交互的許多所需對(duì)象(如菜單)。當(dāng)HTML中不直接支持所需對(duì)象時(shí),基于Web的應(yīng)用的開(kāi)發(fā)者通常通過(guò)利用HTML元素以及在客戶端側(cè)腳本語(yǔ)言中編程此類(lèi)對(duì)象的所需行為來(lái)定義唯一對(duì)象。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,可以通過(guò)將可訪問(wèn)性定義編碼到類(lèi)屬性中來(lái)將可訪問(wèn)角色和狀態(tài)信息包括在超文本標(biāo)記語(yǔ)言文檔中。所述可訪問(wèn)性定義與超文本標(biāo)記語(yǔ)言文檔的對(duì)象相對(duì)應(yīng)并且包括角色信息和狀態(tài)信息,如果狀態(tài)信息可應(yīng)用于相應(yīng)的角色信息的話。腳本被與所述超文本標(biāo)記語(yǔ)言文檔關(guān)聯(lián),并配置為對(duì)所述超文本標(biāo)記語(yǔ)言文檔的至少一部分進(jìn)行分析以標(biāo)識(shí)所述可訪問(wèn)性定義。所述腳本還將所述可訪問(wèn)性定義中的所述角色信息和所述狀態(tài)信息映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
可以將所述可訪問(wèn)性定義編碼到類(lèi)屬性中,以便定義可訪問(wèn)性數(shù)據(jù)結(jié)構(gòu)。所述可訪問(wèn)性數(shù)據(jù)結(jié)構(gòu)包括可訪問(wèn)性標(biāo)題、所述角色信息和所述狀態(tài)信息(如果可應(yīng)用于相應(yīng)的角色信息的話)。所述可訪問(wèn)性標(biāo)題將其關(guān)聯(lián)的類(lèi)屬性唯一地標(biāo)識(shí)為包含所述可訪問(wèn)性數(shù)據(jù)結(jié)構(gòu)。所述角色信息對(duì)應(yīng)于所述文檔的關(guān)聯(lián)對(duì)象的角色或功能,并且狀態(tài)信息(如果存在)對(duì)應(yīng)于關(guān)聯(lián)的角色信息的當(dāng)前狀態(tài)。
所述類(lèi)屬性還可以包含與所述可訪問(wèn)性定義不相關(guān)的類(lèi)信息。例如,在所述可訪問(wèn)性標(biāo)題之前可以有任意數(shù)量的不相關(guān)類(lèi)。此外,可以通過(guò)所述類(lèi)屬性將所述可訪問(wèn)性定義編碼到語(yǔ)義上無(wú)意義的超文本標(biāo)記語(yǔ)言元素(如<span>或<div>)中。
可以將所述腳本配置為在裝入超文本標(biāo)記語(yǔ)言文檔時(shí)執(zhí)行所述分析操作,和/或可以將所述腳本配置為在每次裝入超文本標(biāo)記語(yǔ)言文檔之后添加新的元素時(shí)執(zhí)行所述分析操作。此外,所述腳本可以將所述角色和狀態(tài)信息映射到擴(kuò)展的超文本標(biāo)記語(yǔ)言命名空間屬性中。
根據(jù)本發(fā)明的另一個(gè)方面,用于在超文本標(biāo)記語(yǔ)言文檔中包括可訪問(wèn)角色和狀態(tài)信息的計(jì)算機(jī)程序產(chǎn)品包括其中包含計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì)。所述計(jì)算機(jī)可用介質(zhì)包括配置為將可訪問(wèn)性定義編碼到包括角色信息和相應(yīng)狀態(tài)信息(如果適用)的類(lèi)屬性中的計(jì)算機(jī)可用程序代碼,其中所述可訪問(wèn)性定義與超文本標(biāo)記語(yǔ)言文檔的對(duì)象關(guān)聯(lián)。所述超文本標(biāo)記語(yǔ)言文檔與腳本關(guān)聯(lián),所述腳本配置對(duì)所述超文本標(biāo)記語(yǔ)言文檔的至少一部分進(jìn)行分析以標(biāo)識(shí)所述可訪問(wèn)性定義,并將所述可訪問(wèn)性定義的所述角色信息和所述狀態(tài)信息映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
所述腳本可以例如包括配置為可以從所述超文本標(biāo)記語(yǔ)言文檔調(diào)用的功能庫(kù)的計(jì)算機(jī)可用程序代碼。所述腳本還可以包括配置為可被調(diào)用以分析單個(gè)元素或文檔的任何部分(包括整個(gè)文檔)的功能庫(kù)的計(jì)算機(jī)可用程序代碼。在此方面,所述腳本可以直接與所述文檔包括在一起或包括為單獨(dú)的文件。


當(dāng)結(jié)合附圖閱讀時(shí),可以最佳地理解本發(fā)明的各種實(shí)施例的優(yōu)選實(shí)施例的以下詳細(xì)說(shuō)明,其中使用相同的標(biāo)號(hào)指示相同的結(jié)構(gòu),這些附圖是圖1是可以在其上實(shí)現(xiàn)本發(fā)明的不同方面的典型計(jì)算機(jī)環(huán)境的簡(jiǎn)化方塊圖;圖2是示出了典型超文本標(biāo)記語(yǔ)言文檔的選擇組件的方塊圖;圖3是示出了使用HTML類(lèi)屬性的總體框架的方塊圖;圖4是示出了示例性使用所述類(lèi)屬性來(lái)編碼角色和狀態(tài)信息的方塊圖;圖5是示出了示例性使用腳本將角色和狀態(tài)信息映射到XHTML命名空間的角色和狀態(tài)屬性的方塊圖;圖6是示出了用于從HTML代碼中提取角色和狀態(tài)信息的示例性分析程序的流程圖;以及圖7是示出了為關(guān)聯(lián)的對(duì)象將可訪問(wèn)性定義示例性映射到相應(yīng)的XHTML屬性的方塊圖。
具體實(shí)施例方式
在示例性實(shí)施例的以下詳細(xì)說(shuō)明中,參考了形成本說(shuō)明的一部分的附圖,并且其中通過(guò)示例而不是限制的方式示出了其中可以實(shí)現(xiàn)本發(fā)明的特定實(shí)施例。應(yīng)該理解,可以使用其他實(shí)施例,并且可以在不偏離本發(fā)明的各種實(shí)施例的精神和范圍的情況下做出更改。
如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明的各方面可以被包括為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。此外,本發(fā)明的各個(gè)方面可以采取完全硬件實(shí)施例、完全軟件實(shí)施例或組合了軟件和硬件方面的實(shí)施例的形式。此外,本發(fā)明可以采取在計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(所述介質(zhì)中包括有計(jì)算機(jī)可用程序代碼)上的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明的軟件方面可以存儲(chǔ)在任何適當(dāng)?shù)挠?jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)上,包括但不限于任何可以包含、存儲(chǔ)、傳送、傳播或傳輸程序以供或者結(jié)合相應(yīng)處理設(shè)備的指令執(zhí)行系統(tǒng)使用的介質(zhì)。所述計(jì)算機(jī)可讀介質(zhì)可以例如包括電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的更具體的實(shí)例包括具有一個(gè)或多個(gè)線的電連接、便攜式計(jì)算機(jī)盤(pán)、磁存儲(chǔ)設(shè)備、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦可編程只讀存儲(chǔ)器(EPROM或閃速存儲(chǔ)器)、光纖、便攜式光盤(pán)(CD-ROM)或數(shù)字視頻盤(pán)(DVD)、光存儲(chǔ)設(shè)備,或傳輸介質(zhì)(如那些支持到互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)或其他網(wǎng)絡(luò)的有線或無(wú)線連接的介質(zhì))。
通常使用腳本語(yǔ)言(如ECMAScript)編寫(xiě)用于執(zhí)行本發(fā)明的各個(gè)方面的操作的計(jì)算機(jī)程序代碼。但是,部分代碼還可以使用面向?qū)ο蟮木幊陶Z(yǔ)言(如Java、Smalltalk、C++),或使用常規(guī)過(guò)程編程語(yǔ)言(如“C”編程語(yǔ)言或類(lèi)似的編程語(yǔ)言)進(jìn)行編寫(xiě)。所述程序代碼可以作為獨(dú)立軟件包在用戶計(jì)算機(jī)上整體執(zhí)行、部分執(zhí)行,部分在用戶計(jì)算機(jī)且部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或者整體在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后者的情況中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或其他網(wǎng)絡(luò)連接來(lái)連接到用戶的計(jì)算機(jī)。例如,可以通過(guò)互聯(lián)網(wǎng)(使用互聯(lián)網(wǎng)服務(wù)提供商)進(jìn)行到外部計(jì)算機(jī)的連接。
參考根據(jù)本發(fā)明的各種實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖說(shuō)明和/或方塊圖在此描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,可以通過(guò)計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)所述流程圖說(shuō)明和/或方塊圖的每個(gè)方塊,以及所述流程圖說(shuō)明和/或方塊圖中的方塊組合??梢詫⑦@些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器產(chǎn)生機(jī)器,從而通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令將創(chuàng)建用于實(shí)現(xiàn)在流程圖和/或方塊圖方塊(多個(gè))中指定的功能/操作的方法。
這些計(jì)算機(jī)程序指令還可以存儲(chǔ)在可以引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置按照特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,從而存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)器中的指令將產(chǎn)生一件制品,所述制品包括實(shí)現(xiàn)在流程圖和/或方塊圖的方塊(多個(gè))中指定的功能/操作的指令裝置。
所述計(jì)算機(jī)程序指令還可以裝入計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置,以導(dǎo)致在計(jì)算機(jī)或其他可編程裝置上執(zhí)行一系列操作步驟以便生成計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而在計(jì)算機(jī)或其他可編程裝置上執(zhí)行的指令將提供用于實(shí)現(xiàn)在流程圖和/或方塊圖的方塊(多個(gè))中指定的功能/操作的步驟。
現(xiàn)在參考附圖,具體地說(shuō),參考圖1,圖1示出了代表性的計(jì)算機(jī)系統(tǒng)10,其中可以使用常規(guī)互聯(lián)網(wǎng)范例的子集(稱(chēng)為萬(wàn)維網(wǎng))來(lái)創(chuàng)建和訪問(wèn)超文本標(biāo)記語(yǔ)言(HTML)文檔(在此也稱(chēng)為網(wǎng)頁(yè))。HTML創(chuàng)作實(shí)體(如個(gè)人、一組個(gè)人、軟件代理或其他源)例如使用在第一計(jì)算機(jī)14上運(yùn)行的適當(dāng)?shù)奈臋n創(chuàng)作軟件來(lái)創(chuàng)建HTML文檔12。隨后HTML文檔12的內(nèi)容通過(guò)網(wǎng)絡(luò)18傳輸?shù)椒?wù)器計(jì)算機(jī)16。網(wǎng)絡(luò)18可以例如包括互聯(lián)網(wǎng)(包括萬(wàn)維網(wǎng))、內(nèi)聯(lián)網(wǎng)、外網(wǎng)或任何其他適當(dāng)?shù)耐ㄐ怕窂?。通常,?jì)算機(jī)系統(tǒng)10將包括用于域名解析、路由和其他控制功能的其他服務(wù)器20。
一旦HTML文檔12駐留在服務(wù)器計(jì)算機(jī)16上,用戶代理就可以訪問(wèn)HTML文檔12。用戶代理可以包括例如Web瀏覽器(如基于圖形和/或文本的計(jì)算機(jī)應(yīng)用)或非可視瀏覽器(如音頻、盲文和其他輔助技術(shù)設(shè)備)。用戶代理還可以包括搜索機(jī)器人、代理服務(wù)器等,從而用戶無(wú)需直接與相應(yīng)的用戶代理交互。用戶代理通常將HTML文檔12呈現(xiàn)為可顯示文檔22,后者被解釋、轉(zhuǎn)換或以其他方式格式化,以使用戶或操作員可以例如在客戶機(jī)24上查看、聽(tīng)到或以其他方式與呈現(xiàn)的HTML文檔交互。
代表性客戶機(jī)24可以包括個(gè)人計(jì)算機(jī)(PC)、筆記本計(jì)算機(jī)、家電或普及計(jì)算設(shè)備,如個(gè)人數(shù)字助理(PDA)、掌上計(jì)算機(jī)、蜂窩訪問(wèn)處理設(shè)備或能夠與計(jì)算機(jī)系統(tǒng)10上的其他設(shè)備通信的其他適當(dāng)?shù)脑O(shè)備??蛻魴C(jī)24通常包括操作系統(tǒng)以及一個(gè)或多個(gè)互聯(lián)網(wǎng)工具,包括用于檢索和處理HTML文檔12的用戶代理(如Web瀏覽器)??蛻魴C(jī)24和服務(wù)器計(jì)算機(jī)16之間的通信通常符合超文本傳輸協(xié)議(HTTP),并且此類(lèi)通信可以在安全或非安全連接上進(jìn)行。
通過(guò)網(wǎng)絡(luò)18進(jìn)行通信的每個(gè)計(jì)算設(shè)備(例如第一計(jì)算機(jī)14、服務(wù)器16、20和客戶機(jī)24)通常包括至少一個(gè)用于執(zhí)行軟件代碼的處理器16,系統(tǒng)存儲(chǔ)器28(如隨機(jī)存取存儲(chǔ)器(RAM),用于存儲(chǔ)由處理器26執(zhí)行的軟件代碼),以及用于存儲(chǔ)包括軟件應(yīng)用、數(shù)據(jù)文件等的信息文件的盤(pán)或其他永久性存儲(chǔ)裝置30。通常會(huì)提供處理機(jī)制32,以促進(jìn)系統(tǒng)存儲(chǔ)器28和永久性存儲(chǔ)裝置30之間的通信。通常還提供多個(gè)輸入輸出設(shè)備(I/O)設(shè)備34以允許外部設(shè)備與處理器26通信。例如,I/O設(shè)備(如網(wǎng)絡(luò)接口)包括用于與計(jì)算機(jī)交互和通過(guò)網(wǎng)絡(luò)18通信的硬件和/或軟件。
典型的計(jì)算設(shè)備還包括適當(dāng)?shù)能浖?,所述軟件包括操作系統(tǒng)36以及一個(gè)或多個(gè)應(yīng)用38,它們通常存儲(chǔ)在永久性存儲(chǔ)裝置30中,并臨時(shí)復(fù)制到系統(tǒng)存儲(chǔ)器28中以便執(zhí)行。所述代表性計(jì)算機(jī)還可以包括應(yīng)用編程接口(API)40。例如,API40可以提供許多擴(kuò)展,這些擴(kuò)展使得應(yīng)用開(kāi)發(fā)者能夠通過(guò)軟件程序(包括插件和腳本)來(lái)擴(kuò)展和/或定制HTML文檔的核心功能。
參考圖1和圖2。一般地說(shuō),HTML文檔(如圖1中示出的HTML文檔12)包含三個(gè)主要組件,其中包括HTML版本組件50、標(biāo)題組件52和主體組件54。HTML版本組件50聲明在文檔12中編寫(xiě)的HTML代碼的版本。標(biāo)題組件52是包含與文檔12有關(guān)的信息的聲明部分,并且可以包括諸如文檔標(biāo)題、可以用于搜索引擎的關(guān)鍵字,以及其他不被視為文檔內(nèi)容的數(shù)據(jù)之類(lèi)的數(shù)據(jù)。主體組件54包含HTML文檔內(nèi)容,所述內(nèi)容通常呈現(xiàn)為格式化的提供給訪問(wèn)該HTML文件的用戶的可視和/或音頻文件。例如,如此處更完整地描述的,可以使用諸如客戶機(jī)24上的Web瀏覽器之類(lèi)的用戶代理將主體組件54呈現(xiàn)為可提供的文檔22。
如圖所示,文檔12包括多個(gè)描述HTML文檔12的各部分的元素56(如示出的,共有n個(gè)元素)。每個(gè)元素56可以包括一個(gè)或多個(gè)標(biāo)識(shí)或描述相應(yīng)元素的特性的屬性。例如,ID屬性可用于為元素56指派名稱(chēng),該名稱(chēng)在HTML文檔12中必須是唯一的。
參考圖3,另一個(gè)可用于描述元素56的特性的屬性是類(lèi)屬性60。HTML文檔開(kāi)發(fā)者利用類(lèi)屬性來(lái)指定HTML文檔12的元素56為類(lèi)的成員。實(shí)際上,HTML文檔的給定元素56可以是多個(gè)類(lèi)的成員,并且任何數(shù)量的元素56可以共享相同類(lèi)。在常規(guī)HTML中,所述類(lèi)屬性由類(lèi)名稱(chēng)62的空格分隔列表來(lái)表示。
參考圖4,可以利用HTML類(lèi)屬性60來(lái)包含可訪問(wèn)性定義70。所述可訪問(wèn)性定義70用于為HTML文檔12的對(duì)象指派角色和狀態(tài)數(shù)據(jù)。在示出的實(shí)例中,可訪問(wèn)性定義70包含可訪問(wèn)性標(biāo)題72、角色信息74和通常對(duì)應(yīng)于特定角色信息的狀態(tài)信息76(可選)。狀態(tài)信息76在圖4中示為虛線以表示可能存在也可能不存在與給定的可訪問(wèn)性定義70關(guān)聯(lián)的狀態(tài)信息,這取決于例如在此更詳細(xì)說(shuō)明的特定角色信息。因此,在示出的實(shí)例中,可以將可訪問(wèn)性定義70表征為用于組織角色和狀態(tài)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。使用常規(guī)HTML類(lèi)屬性語(yǔ)法,可訪問(wèn)性定義70的類(lèi)的第一個(gè)類(lèi)包含可訪問(wèn)性標(biāo)題72,可訪問(wèn)性定義70的類(lèi)的第二個(gè)類(lèi)包含角色信息74,并且狀態(tài)信息76(如果適用)被編碼到可訪問(wèn)性定義70的后續(xù)的類(lèi)中。通過(guò)空白間隔來(lái)分隔可訪問(wèn)性標(biāo)題72、角色信息74和狀態(tài)信息76。
通過(guò)將腳本事件處理器和各種演示與語(yǔ)義上無(wú)意義的HTML元素56(如<div>或<span>)關(guān)聯(lián),可以在HTML平臺(tái)中容易地創(chuàng)建和利用HTML中本來(lái)不支持的動(dòng)態(tài)超文本標(biāo)記語(yǔ)言(DHTML)控件或?qū)ο?。這些DHTML控件可以具有通過(guò)類(lèi)屬性與它們關(guān)聯(lián)的相關(guān)可訪問(wèn)性定義70。例如,用于帶有DHTML控件的關(guān)聯(lián)可訪問(wèn)性信息的簡(jiǎn)化HTML語(yǔ)法通??杀硎緸槿缦?
<body>
<span class=“nonrelated_classes accessibility_header role_information state_information”>
</span>
可訪問(wèn)性標(biāo)題72定義了將特定類(lèi)屬性標(biāo)識(shí)為可訪問(wèn)性定義70的控制序列??稍L問(wèn)性標(biāo)題72對(duì)HTML文檔12中的現(xiàn)有類(lèi)屬性60應(yīng)該是唯一的。但是,在HTML文檔12中重復(fù)利用相同的可訪問(wèn)性標(biāo)題72來(lái)指示新的可訪問(wèn)性定義70的出現(xiàn)。在一個(gè)示例性實(shí)施方式中,選擇可訪問(wèn)性標(biāo)題72以包含字“accessible”。因此,從概念的立場(chǎng),可以將每個(gè)可訪問(wèn)性定義70及每個(gè)相應(yīng)的DHTML控件或?qū)ο笠暈轭?lèi)型“accessible”的類(lèi)。
角色信息74定義了DHTML對(duì)象的角色,如警告、按鈕、復(fù)選框、列標(biāo)題、列表項(xiàng)、菜單欄或菜單項(xiàng)等。狀態(tài)信息76定義了當(dāng)前狀態(tài),即相應(yīng)DHTML對(duì)象的狀態(tài)。例如,由復(fù)選框角色定義的HTML對(duì)象可以具有狀態(tài)checked=true或checked=false;由列表項(xiàng)角色定義的HTML對(duì)象可以具有選定、只讀等狀態(tài)。在一個(gè)示例性實(shí)施方式中,將每個(gè)可訪問(wèn)性定義70格式化為包括單個(gè)可訪問(wèn)性標(biāo)題72(如關(guān)鍵字“accessible”)、角色信息74的一次出現(xiàn)及狀態(tài)信息76的零次或多次出現(xiàn)??梢愿鶕?jù)特定實(shí)施方式的需要可選地提供其他定義格式。
狀態(tài)信息76的每次出現(xiàn)都可以包含例如由連字符分隔的關(guān)鍵字-值對(duì)。例如,要表示當(dāng)前選中了復(fù)選框控件,則示例性HTML語(yǔ)法可以記為<body>
<span class=“accessible checkbox checked-true″>
</span>
進(jìn)而,可以由不帶連字符且未指定布爾狀態(tài)的狀態(tài)名稱(chēng)來(lái)可選地表示真布爾狀態(tài),例如
<body>
<span class=″accessible checkbox checked″>
</span>
類(lèi)屬性60還可以包含與可訪問(wèn)性定義不相關(guān)的類(lèi),如由虛線示出的類(lèi)62所表示的。例如,Web開(kāi)發(fā)者可以為將可訪問(wèn)的對(duì)象創(chuàng)建某些特定的層疊樣式表單(CSS)樣式。如果使用span元素<span>來(lái)表示樹(shù)窗口小部件中的樹(shù)項(xiàng),則可以將CSS樣式稱(chēng)為“elegantTreeItem”。因此,相應(yīng)的span類(lèi)可以為<span class=″e(cuò)legantTreeItem accessible treeitem″>
其中實(shí)際的CSS類(lèi)名稱(chēng)出現(xiàn)在可訪問(wèn)性標(biāo)題之前。
在以上可訪問(wèn)性定義70的示例性實(shí)例中,將可訪問(wèn)性標(biāo)題72概念性地視為顯示可訪問(wèn)性信息在類(lèi)屬性中何處開(kāi)始的標(biāo)記。因此,類(lèi)屬性中可能具有位于可訪問(wèn)性標(biāo)題之前的用于任何其他內(nèi)容的類(lèi)。但是,只要可以設(shè)計(jì)出規(guī)則以從空格分隔的類(lèi)列表中提取角色和狀態(tài)信息,就可以按照任何順序來(lái)表征類(lèi)屬性中的類(lèi)(包括角色和狀態(tài)信息)。因此,在某些實(shí)施方式中可能不需要可訪問(wèn)性標(biāo)題72。
由于利用了HTML的類(lèi)屬性來(lái)定義數(shù)據(jù)結(jié)構(gòu),因此可能要求用戶代理理解如何解釋可訪問(wèn)性定義70的數(shù)據(jù)結(jié)構(gòu)。作為一種可選方式,可以進(jìn)一步提供客戶端腳本庫(kù)(例如,可以隨HTML文檔12一起提供,或在處理HTML文檔12時(shí)可由用戶代理以其他方式訪問(wèn))以定義寫(xiě)入可訪問(wèn)性定義70的角色和狀態(tài)信息74、76。例如,可以使用ECMAScript庫(kù)來(lái)構(gòu)建腳本例程。使用腳本,用戶代理無(wú)需了解可訪問(wèn)性定義70的新數(shù)據(jù)結(jié)構(gòu),因?yàn)榭梢允褂盟瞿_本來(lái)執(zhí)行必要操作,下面將詳細(xì)說(shuō)明其一個(gè)實(shí)例。
基于XML的標(biāo)記語(yǔ)言(如擴(kuò)展超文本標(biāo)記語(yǔ)言,XHTML)提供了基于Web的應(yīng)用直接在基于Web的文檔中定義可訪問(wèn)角色和狀態(tài)元數(shù)據(jù)的方法。但是,XHTML規(guī)范要求聲明和使用命名空間來(lái)表示可訪問(wèn)角色和狀態(tài)元數(shù)據(jù)。XHTML命名空間是由統(tǒng)一資源標(biāo)識(shí)符(URI)標(biāo)識(shí)的用作元素類(lèi)型和屬性名稱(chēng)的名稱(chēng)集合。但是,HTML文檔不支持命名空間,因此必需的可訪問(wèn)性角色和狀態(tài)元數(shù)據(jù)不能直接包括在純HTML文檔中。具體地說(shuō),由于HTML的性質(zhì)(包括Web瀏覽器分析HTML文檔的方式),HTML無(wú)法支持多個(gè)命名空間。典型的Web瀏覽器構(gòu)建文檔對(duì)象模型(DOM),即包含元素和屬性的表示并且從文檔對(duì)象模型呈現(xiàn)文檔的樹(shù)。將在所有Web瀏覽器中標(biāo)準(zhǔn)化呈現(xiàn)過(guò)程中使用的數(shù)據(jù)結(jié)構(gòu)。因此,在通用的默認(rèn)命名空間中將所有HTML元素都寫(xiě)入存儲(chǔ)器。
但是,一旦Web瀏覽器構(gòu)建了所述文檔對(duì)象模型,該模型就確實(shí)支持多個(gè)命名空間。因此,在Web瀏覽器分析文檔之后,也就是將所述文檔裝入存儲(chǔ)器(例如客戶機(jī)24上的存儲(chǔ)器)之后,可以利用腳本將角色和狀態(tài)信息從可訪問(wèn)性定義(多個(gè))復(fù)制到適當(dāng)?shù)拿臻g角色和狀態(tài)屬性中。
在XHTML和其他基于XML的標(biāo)記語(yǔ)言規(guī)范中,模塊化的方法允許Web瀏覽器將核心元素和屬性分組到默認(rèn)命名空間中,并將其他元素和屬性分配到其他命名空間(如角色信息命名空間和狀態(tài)信息命名空間)。然后Web瀏覽器獲取所有命名空間并構(gòu)建統(tǒng)一的對(duì)象模型來(lái)呈現(xiàn)所述文檔。
根據(jù)本發(fā)明的一個(gè)示例性方面,使用常規(guī)HTML和適合的腳本將已編碼到可訪問(wèn)性定義70中的角色信息和狀態(tài)信息映射到命名空間角色和狀態(tài)屬性。適合的客戶端腳本語(yǔ)言(如Javascript)用于在支持命名空間的瀏覽器中通過(guò)命名空間角色和狀態(tài)屬性將此信息附加到每個(gè)元素。根據(jù)本發(fā)明的一個(gè)方面,可訪問(wèn)性定義70被映射到可由兼容的Web瀏覽器和輔助技術(shù)處理和理解的命名空間角色和狀態(tài)格式。此方法為HTML文檔作者提供了將角色和狀態(tài)信息編碼到遺留HTML文檔、利用角色和狀態(tài)定義的靈活性以及利用Web瀏覽器對(duì)這些定義的內(nèi)建支持的能力。此外,此方法可以與任何采用XHTML支持的Web瀏覽器一起使用,而不支持XHTML的Web瀏覽器將忽略所述方法。
因此,開(kāi)發(fā)者可以完全利用命名空間角色和狀態(tài)信息,而不必使HTML文檔12中編寫(xiě)的HTML代碼與XHTML格式一致。相反,可以繼續(xù)使用常規(guī)和收到良好支持的HTML。
在其上執(zhí)行Web瀏覽器的基于圖形的計(jì)算機(jī)操作系統(tǒng)通常提供了可訪問(wèn)性應(yīng)用編程接口(API)來(lái)促進(jìn)與輔助技術(shù)(如屏幕讀取器、屏幕放大鏡、語(yǔ)音命令軟件等)的互操作性。本質(zhì)上,這些API允許開(kāi)發(fā)者提供與輔助技術(shù)需要與用戶交互的文檔內(nèi)容、用戶界面控件和重要事件有關(guān)的信息。此信息中包括與給定應(yīng)用關(guān)聯(lián)的各種對(duì)象的角色和狀態(tài)信息。
如上所述,如果特定的查看Web瀏覽器不支持XHTML,則將可訪問(wèn)性定義70編碼到HTML文檔12中的方式(例如使用HTML元素)會(huì)生成沒(méi)有任何負(fù)面影響的代碼。但是,支持的Web瀏覽器可以實(shí)現(xiàn)從編碼到可訪問(wèn)性定義70中的角色和狀態(tài)信息74、76到相應(yīng)的命名空間角色和狀態(tài)信息的映射,隨后可以將所述命名空間角色和狀態(tài)信息映射到在客戶機(jī)24上執(zhí)行的操作系統(tǒng)的基礎(chǔ)可訪問(wèn)性體系結(jié)構(gòu)。然后,輔助技術(shù)可以通過(guò)支持位于客戶機(jī)24的基于圖形的計(jì)算機(jī)操作系統(tǒng)上的其他圖形桌面應(yīng)用的相同可訪問(wèn)性API來(lái)訪問(wèn)所述信息。
命名空間的使用對(duì)Web開(kāi)發(fā)者和Web瀏覽器都很方便。但是,本發(fā)明的各個(gè)方面還允許開(kāi)發(fā)者定義用于角色和狀態(tài)信息74、76的唯一命名空間,只要將附加支持集成到基礎(chǔ)系統(tǒng)以容納這些命名空間即可。
作為一個(gè)實(shí)例,可訪問(wèn)性定義70可用于構(gòu)建動(dòng)態(tài)的復(fù)選框。實(shí)現(xiàn)DHTML復(fù)選框的示例性部分偽代碼部分可以編寫(xiě)為如下<html>
<head>
<title>DHTML Checkbox,HTML edition</title>
<script type=″text/javascript″src=″rolestate.js″></script>
<script type=″text/javascript″>
<![CDATA[//Mouse and keyboard event handlers for controlsfunction checkBoxEvent(event){
if((event.type==″click″&&event.button==0)‖(event.type==″keydown″&&event.keyCode==32)){//Toggle checkboxvar checkbox=event.target;if(checkbox.getAttributeNS(″http://www.w3.org/2005/07/aaa″,″checked″)==″true″){checkbox.removeAttributeNS(″http://www.w3.org/2005/07/aaa″,″checked″);}else{checkbox.setAttributeNS(″http://www.w3.org/2005/07/aaa″,″checked″,″true″);}return false;//Don′t contintie propagating event}return true;//Browser can still use event};]]>
</script>
<style type=″text/css>
@namespace state url(″http://www.w3.org/2005/07/aaa″);.checkbox:before{contenturl(′./unchecked.gif)}.checkbox[state|checked=″true″]before{contenturl(′./checked.gif)}</style>
</head>
<body>
<span class=″accessible checkbox checked″id=″chboxl″tabindex=″0″onkeydown=″return checkBoxEvent(event);″onclick=″returncheckBoxEvent(event);″>
The checkbox label</span>
</body>
</html>
概括地說(shuō),以上偽代碼定義了允許鼠標(biāo)和鍵盤(pán)事件處理程序更新復(fù)選框狀態(tài)的checkBoxEvent函數(shù)。如果訪問(wèn)并當(dāng)前選中所述復(fù)選框,則該復(fù)選框切換為關(guān)閉。相反地,如果取消選中該復(fù)選框,則所述復(fù)選框切換為打開(kāi)。如所述代碼建議的,在所述代碼中將可訪問(wèn)性定義70定義為如下<span class=″accessible checkbox checked″id=chboxl″tabindex=″0″onkeydown=″return checkBoxEvent(event);″onclick=″returncheckBoxEvent(event);″>
</span>
除包含可訪問(wèn)性定義70的類(lèi)屬性之外,元素<span>還可以包含其他屬性。例如,如以上示例性代碼進(jìn)一步說(shuō)明的,開(kāi)發(fā)者負(fù)責(zé)進(jìn)一步定義與動(dòng)態(tài)對(duì)象關(guān)聯(lián)的適當(dāng)鍵盤(pán)事件處理程序。此外,開(kāi)發(fā)者負(fù)責(zé)對(duì)該復(fù)選框提供任何所需的可視外觀,例如通過(guò)CSS使用代碼等。
以上示例性代碼使用了用來(lái)將可訪問(wèn)性定義70中的角色和狀態(tài)信息映射到適當(dāng)?shù)拿臻g屬性的腳本庫(kù)。
…<script type=″text/javascript″src=″rolestate.js″></script>
…rolestate.js是ECMAScript庫(kù),其實(shí)現(xiàn)分析HTML文檔12的相應(yīng)類(lèi)屬性60中包含的可訪問(wèn)性定義70中存儲(chǔ)的角色和狀態(tài)信息74、76,并將相關(guān)數(shù)據(jù)復(fù)制到正確的命名空間屬性的功能。因此,當(dāng)輔助技術(shù)要獲取與包括可訪問(wèn)性定義和相應(yīng)腳本(如此處更完整地說(shuō)明的)的遺留HTML文檔(如網(wǎng)頁(yè)或基于Web的應(yīng)用)內(nèi)的DHTML控件的角色和狀態(tài)有關(guān)的信息時(shí),輔助技術(shù)只需支持與命名空間屬性對(duì)應(yīng)的一個(gè)或多個(gè)規(guī)范,如XHTML。Web瀏覽器還可以將角色和狀態(tài)信息從HTML和XHTML映射到Microsoft活動(dòng)可訪問(wèn)性(MSAA)、可訪問(wèn)性工具包(ATK)或其他桌面可訪問(wèn)性API。
從輔助技術(shù)的角度,使用可訪問(wèn)性定義和相應(yīng)腳本(如此處更完整地說(shuō)明的)存儲(chǔ)在遺留HTML文檔中的角色和狀態(tài)信息將“看上去”與直接存儲(chǔ)在XHTML文檔中的可訪問(wèn)性信息完全相同。
將可訪問(wèn)性定義70中包含的角色和狀態(tài)信息映射到XHTML命名空間角色和狀態(tài)屬性只是出于方便的示例性映射。開(kāi)發(fā)者可以可選地選擇通過(guò)使用不同命名空間來(lái)定義定制的角色。但是,基礎(chǔ)系統(tǒng)可能需要附加支持。例如,Web瀏覽器應(yīng)支持編碼到純HTML文檔中的可訪問(wèn)性信息的命名空間,以使其與帶有其他命名空間的相應(yīng)規(guī)范完全相同。
參考圖5,概括地說(shuō),映射腳本78分析HTML文檔12的至少一部分,映射腳本78標(biāo)識(shí)并記錄與編碼到HTML文檔12的已分析部分的可訪問(wèn)性定義70中的角色和狀態(tài)信息74、76對(duì)應(yīng)的可訪問(wèn)性數(shù)據(jù)80。例如,腳本78可以編譯與一個(gè)或多個(gè)對(duì)象關(guān)聯(lián)的角色和狀態(tài)的列表。所述映射腳本78將可訪問(wèn)性數(shù)據(jù)80映射到相應(yīng)的XHTML表示82并設(shè)置適當(dāng)?shù)拿臻g角色和狀態(tài)屬性84。即,稱(chēng)為“角色”的命名空間屬性具有自身為命名空間限定值的值。角色命名空間包含一組用于列舉可能角色的常量。當(dāng)所述腳本分析來(lái)自關(guān)聯(lián)的類(lèi)屬性的角色關(guān)鍵字時(shí),它將所述角色關(guān)鍵字映射到角色命名空間中定義的相應(yīng)常量并在值為命名空間角色的XHTML命名空間中設(shè)置屬性。例如,給定以下可訪問(wèn)性定義<span class=“accessible checkbox”>
所述映射腳本78通過(guò)可訪問(wèn)性標(biāo)題“accessible”來(lái)標(biāo)識(shí)可訪問(wèn)性定義,并提取可訪問(wèn)性數(shù)據(jù),即role=checkbox。所述可訪問(wèn)性數(shù)據(jù)被映射到相應(yīng)的XHTML表示<span xhtml2:role=“wairole:checkbox”>
賦予<span>一個(gè)新的屬性,稱(chēng)為xhtml2:role(“role”屬性位于先前在文檔中將前綴定義為“xhtml2”的命名空間中)。此新屬性具有值“wairole:checkbox”,其中“wairole”是定義為與角色命名空間對(duì)應(yīng)的前綴。
適當(dāng)配備為讀取命名空間角色和狀態(tài)屬性的Web瀏覽器86然后可以顯示關(guān)聯(lián)的動(dòng)態(tài)對(duì)象,盡管基礎(chǔ)代碼是以常規(guī)的HTML編寫(xiě)的。無(wú)法讀取命名空間角色和狀態(tài)屬性的Web瀏覽器86仍然可以與純HTML文檔交互。還可以執(zhí)行到用戶定義的命名空間的映射,只要Web瀏覽器可以從這些用戶定義的命名空間進(jìn)行適當(dāng)?shù)刈x取。
因此,腳本78定義了第一模塊,所述第一模塊用于分析HTML文檔12的至少一部分來(lái)標(biāo)識(shí)可訪問(wèn)性定義70的出現(xiàn)以及用于將可訪問(wèn)性定義70的出現(xiàn)映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
參考圖6,圖6是示出了實(shí)現(xiàn)映射腳本78的一個(gè)示例性方法100的更詳細(xì)的流程圖。方法100的映射腳本編譯HTML頁(yè)面中要在102處分析的HTML元素的第一列表。HTML元素的第一列表可以包含例如元素列表(如<span>、<div>)或可能在其中包含類(lèi)屬性的其他元素。104處的決策判定是否考慮了先前在102的第一列表中編譯的所有元素。如果考慮了所有元素,則在106終止該方法。如果仍存在至少一個(gè)來(lái)自第一列表的元素需要考慮,則選擇元素以便檢查并從選定的元素讀取類(lèi)屬性。在108處編譯第二列表,該列表包含選定的元素的類(lèi)屬性中關(guān)鍵字的列表。110處的決策判定第二列表中是否仍有需要考慮的關(guān)鍵字。如果已經(jīng)考慮所有的關(guān)鍵字,則控制返回104以判定HTML元素的第一列表中是否仍有需要處理的元素。
如果在110處標(biāo)識(shí)了關(guān)鍵字,則在112處做出決策以判定選定的關(guān)鍵字是否包含可訪問(wèn)性標(biāo)題72。繼續(xù)在此使用的實(shí)例,示例性方法100檢查關(guān)鍵字“accessible”,其指定所述類(lèi)屬性中列出的至少某些類(lèi)實(shí)際定義了可訪問(wèn)性定義70的數(shù)據(jù)。如在此更詳細(xì)說(shuō)明的,可以包括與給定類(lèi)屬性中的可訪問(wèn)性定義無(wú)關(guān)的類(lèi)。因此,類(lèi)屬性的第一個(gè)類(lèi)無(wú)需是可訪問(wèn)性標(biāo)題。
如果選定的關(guān)鍵字不是可訪問(wèn)性標(biāo)題72(例如,該關(guān)鍵字不是“accessible”),則方法100循環(huán)返回110處的決策框以考慮下一個(gè)關(guān)鍵字。如果選定的關(guān)鍵字是可訪問(wèn)性標(biāo)題72(例如,選定的關(guān)鍵字是“accessible”),則從114處的類(lèi)屬性讀取指定角色關(guān)鍵字(例如角色信息74)的下一個(gè)關(guān)鍵字。將所述角色信息復(fù)制到XHTML角色屬性,并將所述角色屬性在116處復(fù)制到XHTML命名空間。
在118處做出決策以判定在第二列表中是否仍有任何未考慮的關(guān)鍵字。如果沒(méi)有剩余的關(guān)鍵字,則方法100循環(huán)返回框104以判定是否仍有任何未考慮的元素。如果第二列表中仍有關(guān)鍵字,則這些剩余關(guān)鍵字定義狀態(tài)信息。從120處的第二列表讀取狀態(tài)關(guān)鍵字(例如狀態(tài)信息76)。122處的決策判定所述狀態(tài)關(guān)鍵字是否包含值。如果所述狀態(tài)關(guān)鍵字確實(shí)包含值,則在124處將所述狀態(tài)關(guān)鍵字拆分為名稱(chēng)和值,例如,名稱(chēng)checked和值TURE。另一方面,如果所述狀態(tài)關(guān)鍵字不包含值,則該狀態(tài)名稱(chēng)就是狀態(tài)關(guān)鍵字,并將默認(rèn)的布爾值指派給該狀態(tài)。在示出的實(shí)例中,默認(rèn)的布爾值為T(mén)URE,但是,可以可選地指派其他默認(rèn)狀態(tài)值。將無(wú)論是在124處還是在126處指派的狀態(tài)和值信息在128處復(fù)制到XHTML狀態(tài)命名空間,并且控制返回118。
用于分析HTML文檔的至少一部分以提取和處理可訪問(wèn)性定義(例如,通常與圖6中示出流程圖的方法100一致)的示例性腳本如下
rolestate.js:
function addEvent(elmTarget,sEventName,fCallback){var return Value=false;if(elm Target.addEventListener){elm Target.addEventListener(sEventName,fCallback,true);return Value=true;}else if(elm Target.attachEvent){return Value=elmTarget.attachEvent(′on′+sEventName,fCallback);}return return Value;}if(typeof document.documentElement.setAttributeNS?。健鋟ndefined′){function setAttrNS(elmTarget,uriNamespace,sAttrName,sAttrValue){elmTarget.setAttributeNS(uriNamespace,sAttrName,sAttrValue);}function getAttrNS(elmTarget,uriNamespace,sAttrName){return elmTarget.getAttributeNS(uriNamespace,sAttrName);}function removeAttrNS(elmTarget,uriNamespace,sAttrName){return elm Target.removeAttributeNS(uriNamespace,sAttrName);}}else{
function setAttrNS(elmTarget,uriNamespace,sAttrName,sAttrValue){elmTarget.setAttribute(uriNamespace+sAttrName,sAttrValue);}function getAttrNS(elm Target,uriNamespace,sAttrName){return elm Target.getAttribute(uriNamespace+sAttrName);}function removeAttrNS(elm Target,uriNamespace,sAttrName){return elm Target.removeAttribute(uriNamespace+sAttrName);}}function setRolesAndStates(elm Accessible){var NS_XHTML2=″http://www.w3.org/TR/xhtml2″;var NS_STATE=″http://www.w3.org/2005/07/aaa″;var STATE_MACHINE_BEGIN=0;var STATE_MACHINE_IN_ACCESSIBLE=1;var STATE_MACHINE_ROLE_IS_SET=2;var sClass=elm Accessible.className;var arClass Names=sClass.split(′′);var machine State=STATE_MACHINE_BEGlN;for(j=0;j<arClass Names.length;j++){var sClass=arClassNames[j].replace(//g,″);if(!sClass){continue;}if(sClass==′accessible′){/*found″accessible″keyword,rest of class is roles and states*/
machineState=STATE_MACHINE_IN__ACCESSIBLE;}else if(machineState==STATE_MACHINE_IN_ACCESSIBLE){/*found role,set it and move on*/setAttrNS(elmAccessible,NS_XHTML2,″role″,″wairole:″+sClass);machineState=STATE_MACHINE_ROLE_IS_SET;}else if(machineState==STATE_MACHINE_ROLE_IS_SET){/*found state,set it and look for more*/if(sClass.inexOf(′-′)!=-1){/*state has specific value,parse it out and set it*/var arValue=sClass.split(/-/);/*arValue
is state name,arValue[1]is value*/setAttrNS(elmAccessible,NS_STATE,arValue
,arValue[1]);}else{/*state is simply a name,value is true*/setAttrNS(elmAccessible,NS_STATE,sClass,true);}}}}function findRolesAndStates(elmRoot){if((!elmRoot)‖(!elmRoot.getElementsByTagName)){elmRoot=document;}if(document.evaluate){var snapAccessibleElements=document.evaluate(″.//*[contains(@class,′accessible′)]″,elmRoot,null,XPpathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=snapAccessibleElements.snapshotLength-1;i>=0;i--){
setRolesAndStates(snapAccessibleElements.snapshotltem(i));}}else{var arElements=(typeof elmRoot.all!=′undefined′)?elmRoot.all:
elmRoot.getElementsByTagName(′*′);var iElementCount=arElements,length;for(var i=0;i<iElementCount;i++){if(/accessible/.test(arElements[i].elassName)){setRolesAndStates(arElements[i]);}}}}在上述示例性rolestate.js偽代碼中,提供的庫(kù)不會(huì)執(zhí)行,除非在HTML代碼中另行調(diào)用。為了激活rolestate.js代碼,應(yīng)使用根元素來(lái)調(diào)用findRolesAndStates()函數(shù)。在執(zhí)行時(shí),findRolesAndStates()函數(shù)遍歷給定根元素的所有子元素。如果未給定根元素,則findRolesAndStates()函數(shù)遍歷頁(yè)面上的所有元素(即文檔是默認(rèn)根元素)。例如,通過(guò)將適當(dāng)?shù)拿钐砑拥綆?kù)和/或HTML代碼,findRolesAndStates()函數(shù)可以在頁(yè)面加載時(shí)自動(dòng)執(zhí)行。例如,可以通過(guò)將以下行添加到庫(kù)的結(jié)尾來(lái)使用上面的示例性部分代碼實(shí)現(xiàn)自動(dòng)執(zhí)行addEvent(window,′load′,findRolesAndStates)但是,如果特定Web應(yīng)用在頁(yè)面加載之后將在類(lèi)屬性中存儲(chǔ)角色和狀態(tài)信息的新元素添加到該頁(yè),則此類(lèi)新元素可能需要作為參數(shù)來(lái)調(diào)用findRolesAndStates。
下面說(shuō)明的表1示出了開(kāi)發(fā)者可能希望利用的示例性動(dòng)態(tài)角色的非窮舉列表。列1說(shuō)明了動(dòng)態(tài)對(duì)象角色,標(biāo)記為DHTML角色。列2中的相應(yīng)表達(dá)(標(biāo)記為HTML表示)示出了如在此更詳細(xì)說(shuō)明的應(yīng)編碼到HTML文檔中的示例性可訪問(wèn)性定義語(yǔ)法。列3中的表達(dá)(標(biāo)記為XHTML表示)示出了由rolestate.js庫(kù)根據(jù)來(lái)自列2的相應(yīng)可訪問(wèn)性定義映射到的XHTML角色表達(dá)。下表中的實(shí)例使用<span>元素來(lái)表示DHTML控件,但是可以使用任何提供的HTML元素。此外,列2中列出的可訪問(wèn)性定義的特定格式只是示例性的,只要腳本(如示例性rolestate.js腳本)的特定實(shí)施方式將編碼到HTML文檔中的角色和狀態(tài)數(shù)據(jù)映射到適當(dāng)?shù)拿臻g角色和狀態(tài)屬性,就可以使用任何所需的格式。
表1DHTML角色和相應(yīng)的表示

圖7中顯示的方塊圖中示出了映射的實(shí)例。假設(shè)HTML文檔要包括對(duì)象88,如表1的第1行第1列中標(biāo)識(shí)的警報(bào)。HTML文檔12中的HTML代碼可以包括如表1的第1行第2列中顯示的示例性可訪問(wèn)性定義語(yǔ)法<body>
<span class=“accessible alert”>
</span>
因此,將可訪問(wèn)性定義70嵌入在此更詳細(xì)說(shuō)明的類(lèi)屬性。在執(zhí)行腳本(例如,如圖6中的流程圖和以上示例性rolestate.js偽代碼中說(shuō)明的)時(shí),所述腳本將可訪問(wèn)性定義70映射到相應(yīng)的XHTML表示82。例如,將<spanclass=“accessible alert”>映射到相應(yīng)的XHTML2表示<spanrole=“wairole:alert”>。在此實(shí)例中,未提供狀態(tài)信息。如表1建議的,其他示例性對(duì)象可以包括角色和狀態(tài)信息兩者。此外,如表1的第4行中示出的滑塊對(duì)象的可訪問(wèn)性定義所示,可以有多個(gè)狀態(tài)表項(xiàng)。然后將XHTML表示82復(fù)制到命名空間角色和狀態(tài)屬性84。
也就是說(shuō),當(dāng)所述腳本分析來(lái)自類(lèi)屬性的角色關(guān)鍵字時(shí),所述腳本將所述角色關(guān)鍵字映射到在角色命名空間中定義的常量,然后設(shè)置XHTML命名空間中值為命名空間角色的屬性。因此,<span class=“accessiblealert”>變?yōu)?amp;lt;span xhtml2:role=“wairole:alert”>。賦予<span>一個(gè)新的屬性,名為xhtml2:role(“role”屬性位于先前在文檔中前綴被定義為“xthml2”的命名空間中)。此新屬性具有值“wairole:checkbox”,其中“wairole”是定義為與角色命名空間對(duì)應(yīng)的前綴。
所述可訪問(wèn)性定義和相應(yīng)腳本庫(kù)可以跨平臺(tái)兼容并且可以支持每個(gè)平臺(tái)的事件模型,以及各種Web瀏覽器所支持的標(biāo)準(zhǔn)DOM事件模型。所述可訪問(wèn)性定義和相應(yīng)腳本庫(kù)還可以與HTML和XHTML文檔兼容,所述文檔隨“文本/html”或“應(yīng)用/xhtml+xml”內(nèi)容類(lèi)型提供。此外,可能希望允許所述可訪問(wèn)性定義和相應(yīng)腳本庫(kù)利用瀏覽器特定的優(yōu)化技術(shù)(如Firefox對(duì)客戶端XPath查詢的支持)來(lái)盡可能降低性能影響。
圖中的流程圖和方塊圖示出了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施方式的體系結(jié)構(gòu)、功能和操作。在此方面,所述流程圖或方塊圖中的每個(gè)方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實(shí)現(xiàn)指定的邏輯功能(多個(gè))的一個(gè)或多個(gè)可執(zhí)行指令。還應(yīng)指出,在某些可選實(shí)施方式中,在方塊中說(shuō)明的功能可以不按圖中說(shuō)明的順序發(fā)生。例如,示出為連續(xù)的兩個(gè)方塊可以實(shí)際上被基本同時(shí)地執(zhí)行,或者某些時(shí)候,取決于所涉及的功能,可以以相反的順序執(zhí)行所述方塊。還將指出,所述方塊圖和/或流程圖的每個(gè)方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于硬件的專(zhuān)用系統(tǒng)或?qū)S糜布陀?jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
此處使用的術(shù)語(yǔ)只是為了描述特定的實(shí)施例并且并非旨在限制本發(fā)明。如此處所使用的,單數(shù)形式“a”、“an”和“the”旨在同樣包括復(fù)數(shù)形式,除非上下文明確地另有所指。還將理解,當(dāng)在此說(shuō)明書(shū)中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”指定了聲明的特征、整數(shù)、步驟、操作、元素和/或組件的存在,但是并不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元素、組件和/或其組的存在或增加。
下面的權(quán)利要求中的相應(yīng)結(jié)構(gòu)、材料、操作,以及所有裝置或步驟加功能元素的等同物旨在包括用于與如具體要求的其他要求的元素一起執(zhí)行功能的任何結(jié)構(gòu)、材料或操作。出于示例和說(shuō)明目的給出了對(duì)本發(fā)明的描述,并且所述描述并非旨在是窮舉的或是將本發(fā)明限于所公開(kāi)的形式。對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),在不偏離本發(fā)明的精神和范圍的情況下,許多修改和變化都是顯而易見(jiàn)的。實(shí)施例的選擇和描述是為了最佳地解釋本發(fā)明的原理、實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時(shí),使得本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實(shí)施例。
在詳細(xì)說(shuō)明了本申請(qǐng)的發(fā)明并參考了其優(yōu)選實(shí)施例后,將顯而易見(jiàn)的是,可以做出修改和變化而不偏離所附權(quán)利要求中定義的本發(fā)明的范圍。
權(quán)利要求
1.一種在超文本標(biāo)記語(yǔ)言文檔中包括可訪問(wèn)角色和狀態(tài)信息的方法,所述方法包括將與超文本標(biāo)記語(yǔ)言文檔的對(duì)象對(duì)應(yīng)的可訪問(wèn)性定義編碼到超文本標(biāo)記語(yǔ)言類(lèi)屬性中,所述可訪問(wèn)性定義包括角色信息并且如果狀態(tài)信息可適用于所述角色信息,還包括相應(yīng)的狀態(tài)信息;以及將腳本與所述超文本標(biāo)記語(yǔ)言文檔關(guān)聯(lián),所述腳本配置為分析所述超文本標(biāo)記語(yǔ)言文檔的至少一部分以標(biāo)識(shí)所述文檔中的所述可訪問(wèn)性定義;以及將所述可訪問(wèn)性定義的所述角色信息和所述狀態(tài)信息映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
2.根據(jù)權(quán)利要求1的方法,還包括將可訪問(wèn)性標(biāo)題編碼到所述類(lèi)屬性中,所述可訪問(wèn)性標(biāo)題將所述類(lèi)屬性唯一地標(biāo)識(shí)為包括所述可訪問(wèn)性定義。
3.根據(jù)權(quán)利要求2的方法,還包括將所述可訪問(wèn)性定義編碼到所述類(lèi)屬性的多個(gè)類(lèi)以便所述可訪問(wèn)性標(biāo)題包括所述多個(gè)類(lèi)中的第一個(gè)類(lèi);所述角色信息包括所述多個(gè)類(lèi)中的第二個(gè)類(lèi);以及如果狀態(tài)信息可適用于所述角色信息,則所述狀態(tài)信息包括所述多個(gè)類(lèi)中的至少一個(gè)類(lèi),否則如果沒(méi)有提供狀態(tài)信息,則無(wú)需任何類(lèi)。
4.根據(jù)權(quán)利要求1的方法,其中所述類(lèi)屬性包括空格分隔的類(lèi)列表;所述類(lèi)屬性可以包含與所述可訪問(wèn)性定義不相關(guān)的類(lèi);以及所述腳本配置為從所述類(lèi)列表提取所述角色信息和所述狀態(tài)信息,而不考慮與所述可訪問(wèn)性定義不相關(guān)的所述類(lèi)。
5.根據(jù)權(quán)利要求1的方法,其中所述命名空間角色和狀態(tài)屬性還包括擴(kuò)展超文本標(biāo)記語(yǔ)言命名空間屬性。
6.根據(jù)權(quán)利要求1的方法,還包括配置所述腳本以在裝入所述超文本標(biāo)記語(yǔ)言文檔時(shí)執(zhí)行所述分析。
7.根據(jù)權(quán)利要求1的方法,包括配置所述腳本以在裝入所述超文本標(biāo)記語(yǔ)言文檔后每次添加新元素時(shí)執(zhí)行所述分析。
8.一種在超文本標(biāo)記語(yǔ)言文檔中包括可訪問(wèn)角色和狀態(tài)信息的系統(tǒng),所述系統(tǒng)包括定義對(duì)象的超文本標(biāo)記語(yǔ)言文檔;所述超文本標(biāo)記語(yǔ)言文檔中用于定義可訪問(wèn)性定義的數(shù)據(jù)結(jié)構(gòu),所述可訪問(wèn)性定義包括角色信息并且如果狀態(tài)信息可適用于所述角色信息,還包括相應(yīng)的狀態(tài)信息,所述數(shù)據(jù)結(jié)構(gòu)與所述超文本標(biāo)記語(yǔ)言文檔的所述對(duì)象關(guān)聯(lián);以及第一模塊,所述第一模塊用于分析所述超文本標(biāo)記語(yǔ)言文檔的至少一部分以標(biāo)識(shí)所述可訪問(wèn)性定義并且用于將所述可訪問(wèn)性定義的所述角色信息和所述狀態(tài)信息映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
9.根據(jù)權(quán)利要求8的系統(tǒng),其中將所述數(shù)據(jù)結(jié)構(gòu)作為定義可訪問(wèn)性定義的類(lèi)列表編碼到類(lèi)屬性中以便所述可訪問(wèn)性定義的所述類(lèi)中的第一個(gè)類(lèi)定義了將所述類(lèi)屬性唯一地標(biāo)識(shí)為包含所述可訪問(wèn)性定義的可訪問(wèn)性標(biāo)題;所述可訪問(wèn)性定義的所述類(lèi)中的第二個(gè)類(lèi)定義了所述角色信息;以及如果狀態(tài)信息可適用于所述角色信息,則所述可訪問(wèn)性定義的所述類(lèi)中的至少一個(gè)類(lèi)定義了所述狀態(tài)信息,否則如果沒(méi)有提供狀態(tài)信息,則無(wú)需任何類(lèi)。
10.根據(jù)權(quán)利要求9的系統(tǒng),其中所述第一模塊包括配置為可從所述超文本標(biāo)記語(yǔ)言文檔調(diào)用的功能庫(kù)的腳本。
11.根據(jù)權(quán)利要求8的系統(tǒng),其中所述命名空間角色和狀態(tài)屬性包括擴(kuò)展超文本標(biāo)記語(yǔ)言命名空間角色和狀態(tài)屬性。
12.根據(jù)權(quán)利要求8的系統(tǒng),其中所述第一模塊包括配置為在裝入所述超文本標(biāo)記語(yǔ)言文檔時(shí)執(zhí)行所述分析的腳本。
13.根據(jù)權(quán)利要求8的系統(tǒng),其中所述第一模塊包括配置為在裝入所述超文本標(biāo)記語(yǔ)言文檔后每次添加新元素時(shí)執(zhí)行所述分析的腳本。
14.根據(jù)權(quán)利要求8的系統(tǒng),其中所述第一模塊包括配置為將所述可訪問(wèn)性定義轉(zhuǎn)換為擴(kuò)展超文本標(biāo)記語(yǔ)言表示,以及還將所述擴(kuò)展超文本標(biāo)記語(yǔ)言表示復(fù)制到擴(kuò)展超文本語(yǔ)言命名空間角色和狀態(tài)屬性的腳本。
15.一種用于在超文本標(biāo)記語(yǔ)言文檔中包括可訪問(wèn)角色和狀態(tài)信息的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括其中包含計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì),所述計(jì)算機(jī)可用介質(zhì)包括配置為執(zhí)行權(quán)利要求1-7中的任一權(quán)利要求的方法中的步驟的計(jì)算機(jī)可用程序代碼。
全文摘要
通過(guò)將可訪問(wèn)性定義編碼到類(lèi)屬性中,可以將可訪問(wèn)角色和狀態(tài)信息包括在超文本標(biāo)記語(yǔ)言文檔中。所述可訪問(wèn)性定義與超文本標(biāo)記語(yǔ)言文檔的對(duì)象對(duì)應(yīng)并包括角色信息和狀態(tài)信息(如果狀態(tài)信息可適用于相應(yīng)的角色信息)。腳本與所述超文本標(biāo)記語(yǔ)言文檔關(guān)聯(lián)并配置為分析所述超文本標(biāo)記語(yǔ)言文檔的至少一部分以標(biāo)識(shí)所述可訪問(wèn)性定義。所述腳本還將所述可訪問(wèn)性定義中的所述角色信息和所述狀態(tài)信息映射到相應(yīng)的命名空間角色和狀態(tài)屬性。
文檔編號(hào)G06F17/30GK1987863SQ200610147018
公開(kāi)日2007年6月27日 申請(qǐng)日期2006年11月13日 優(yōu)先權(quán)日2005年12月22日
發(fā)明者B·J·吉布森, L·哈松, M·A·皮爾格林, D·A·吉索爾菲, A·M·萊文賽爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武夷山市| 龙岩市| 台东市| 桂东县| 丹凤县| 镇原县| 娄底市| 台州市| 灵璧县| 灌阳县| 大埔区| 新泰市| 寻甸| 高碑店市| 达日县| 杭锦旗| 石柱| 临清市| 石泉县| 吴堡县| 平乐县| 宁陕县| 乐陵市| 河北省| 托克逊县| 南和县| 新泰市| 舟山市| 北流市| 同仁县| 绥江县| 芜湖市| 凌云县| 宁津县| 丰镇市| 安远县| 穆棱市| 祁东县| 河西区| 家居| 绥德县|