
What is EXI?

EXI是W3C推薦的高效XML交換(EXI)格式1.0(第二版)中指定的XML的非常緊湊的表示。 與標(biāo)準(zhǔn)(文本)XML相比,EXI提高了串行化和解析速度,并允許更有效地使用內(nèi)存和電池壽命。 EXI流通常比等效的XML文檔小很多倍,并且需要較少的CPU時(shí)間來讀取或?qū)懭搿?/span>
EXI可以對(duì)XML文檔進(jìn)行編碼的兩種主要方式 - 無模式模式和模式通知模式。 在無模式模式下,無論模式是否可用于編碼器,EXI都可以編碼任何XML文檔。 在模式通知模式下,EXI具有利用從XML模式提取的信息的獨(dú)特能力,以提高編碼的效率,而不需要通常嚴(yán)格遵守?cái)?shù)據(jù)到模式。 然而,如果用戶確定數(shù)據(jù)將根據(jù)模式有效,則EXI編碼甚至可以更有效。
使用模式信息使得EXI編碼更有效,因?yàn)樗试SEXI處理器在EXI流內(nèi)的任何點(diǎn)處對(duì)流中的下一項(xiàng)做出某些預(yù)測(cè)。例如,如果模式指定元素“A”(在特定上下文中)必須總是后跟元素“B”,則當(dāng)前一元素為“A”時(shí)元素“B”的出現(xiàn)被編碼為零位(在嚴(yán)格模式下)。
在無模板模式中,在編碼或解碼操作期間,EXI處理器基于迄今遇到的文檔的實(shí)際內(nèi)容連續(xù)地修改對(duì)每個(gè)項(xiàng)目進(jìn)行編碼的方式。例如,當(dāng)EXI編碼器在元素“P”的內(nèi)容中遇到元素“C”時(shí),假設(shè)當(dāng)當(dāng)前父元素是元素時(shí),名為“C”的元素比具有其他名稱的元素具有更高的出現(xiàn)概率命名為“P”,并且創(chuàng)建縮寫方式以編碼在名為“P”的元素下名為“C”的元素的出現(xiàn)。下一次在名為“P”的元素(具有相同名稱的相同或后續(xù)元素)下遇到名為“C”的元素時(shí),EXI編碼器將能夠使用“C”的縮寫編碼,從而節(jié)省空間。
總之,EXI的用戶可以在三個(gè)主要選項(xiàng)之間進(jìn)行選擇:(a)根本不使用模式(無模式),(b)以僅支持有效XML文檔(模式通知,嚴(yán)格)的方式使用模式,和(c)以支持與模式的偏離的方式使用模式(模式通知的,非嚴(yán)格的)。模式通知,嚴(yán)格模式是三者中最高效的。無模式模式是最容易使用的,因?yàn)樗簧婕澳J健?/span>
與許多其他XML壓縮技術(shù)一樣,EXI使用字符串表臨時(shí)存儲(chǔ)正在編碼的XML文檔中出現(xiàn)的某些類型的字符串,例如命名空間URI,本地名稱,屬性值等,以允許后續(xù)出現(xiàn)的相同字符串使用短字符串標(biāo)識(shí)符進(jìn)行編碼。在無模式模式中,所有字符串表在編碼或解碼操作開始時(shí)被復(fù)位。在模式通知模式中,包含命名空間URI和本地名稱的字符串表預(yù)填充了從模式中提取的字符串或在XML模式建議中定義的字符串,以便在每個(gè)編碼或解碼操作開始時(shí)已知這些字符串。
EXI中有其他選項(xiàng)影響EXI流的內(nèi)容。其中一些選項(xiàng),稱為保真選項(xiàng),控制EXI處理器在EXI流中包括某些類型的項(xiàng)目的能力,例如XML注釋,處理指令和命名空間聲明。如果用戶對(duì)在EXI編碼中保留的這樣的項(xiàng)目之一不感興趣,則他們可以通過不必包括該類型的項(xiàng)目來選擇將使得EXI編碼更有效的選項(xiàng)。因此,例如,如果用戶聲明命名空間聲明和前綴不需要保留,則EXI流編碼器將放棄編碼這些東西的能力,并且所得到的EXI流可以更緊湊。還有另一個(gè)保真選項(xiàng),它控制使用簡(jiǎn)單類型保存屬性和元素的原始字符串值。當(dāng)未選擇此選項(xiàng)時(shí),將更有效地編碼這些值(例如,類型為xsd:integer的屬性值將被編碼為二進(jìn)制整數(shù)而不是字符串),但讀者無法重建讀回EXI流時(shí)的精確原始字符串。在許多應(yīng)用中,這種信息丟失是可接受的,因此不應(yīng)該選擇該選項(xiàng)。
EXI的最后一個(gè)主要特性是支持字節(jié)對(duì)齊和壓縮。用戶可以選擇四個(gè)對(duì)齊選項(xiàng)之一:(a)位打包對(duì)齊,(b)字節(jié)對(duì)齊對(duì)齊,(c)預(yù)壓縮和(d)壓縮。位打包和壓縮是更緊湊的(壓縮通常,但不總是,比位打包更緊湊)。位填充和字節(jié)對(duì)齊是較快的(字節(jié)對(duì)齊可以比位填充稍快)。預(yù)壓縮和壓縮都將EXI流內(nèi)的編碼數(shù)據(jù)排列成特定的布局,其中可能相似的所有編碼數(shù)據(jù)項(xiàng)都靠近在一起。這種布置提高了應(yīng)用于數(shù)據(jù)的壓縮算法的有效性。預(yù)壓縮本身不執(zhí)行任何壓縮,因?yàn)樗奈ㄒ荒康氖菫橥獠繅嚎s步驟(EXI處理器外部)準(zhǔn)備要應(yīng)用于EXI流的EXI流。壓縮進(jìn)一步并且將標(biāo)準(zhǔn)DEFLATE算法應(yīng)用于類似編碼數(shù)據(jù)項(xiàng)的每個(gè)塊,以產(chǎn)生最終的EXI流。
京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫