EXI 是 W3C 推薦高效 XML 交換 (EXI) 格式 1.0(第二版)中指定的 XML 的一種非常緊湊的表示。與標準(文本)XML 相比,EXI 提高了序列化和解析速度,并允許更有效地使用內存和電池壽命。EXI 流通常比等效的 XML 文檔小很多倍,并且需要更少的 CPU 時間來讀取或寫入。
EXI 可以通過兩種主要方式對 XML 文檔進行編碼 - schemaless 模式和 schema-informed 模式。在 schemaless 模式下,EXI 可以對任何 XML 文檔進行編碼,無論模式是否可供編碼器使用。在 schema-informed 模式下,EXI 具有獨特的能力,可以利用從 XML 模式中提取的信息來提高編碼效率,而通常不需要嚴格 數據對模式的依從性。但是,如果用戶確定數據根據架構有效,EXI 編碼可以甚至更有效。
模式信息的使用使 EXI 編碼更有效,因為它允許 EXI 處理器在 EXI 流中的任何點對流中的下一項進行某些預測。例如,如果模式指定元素“A”(在特定上下文中)必須始終跟隨元素“B”,那么當前一個元素是“A”時,元素“B”的出現將被編碼為 < span style="text-decoration: underline">零位(在 strict 模式下)。
在 schemaless 模式下,在編碼或解碼操作期間,EXI 處理器會根據目前遇到的文檔的實際內容不斷修改編碼每個項目的方式。例如,當EXI編碼器在一個元素“P”的內容中遇到一個元素“C”時,它假設當當前父元素是一個元素時,一個名為“C”的元素比其他名字的元素出現的概率更高 命名為“P”,并創建一種縮寫方式來編碼名為“C”的元素在名為“P”的元素下的出現。下一次在名為“P”的元素下遇到名為“C”的元素(相同或具有相同名稱的后續元素),EXI 編碼器將能夠使用“C”的縮寫編碼,從而保存 空間。
總之,EXI 的用戶可以在三個主要選項之間進行選擇:(a) 根本不使用模式 (schemaless),(b) 在 一種僅支持有效 XML 文檔的方式(schema-informed, strict),以及 (c) 以支持偏離模式的方式使用模式(< span style="font-style:italic">schema-informed, non-strict)。schema-informed, strict mode 是三者中效率最高的。schemaless 模式是最容易使用的,因為它不涉及模式。
EXI 與許多其他 XML 壓縮技術一樣,使用字符串表來臨時存儲正在編碼的 XML 文檔中出現的某些類型的字符串,例如名稱空間 URI、本地名稱、屬性值等,以允許后續出現相同的字符串。要使用短字符串標識符編碼的字符串。在 schemaless 模式下,所有的字符串表都會在編碼或解碼操作開始時重置。在 schema-informed 模式中,包含命名空間 URI 和本地名稱的字符串表預先填充了取自模式或在 XML 模式建議中定義的字符串,以便 在每個編碼或解碼操作開始時,這些字符串將是已知的。
EXI 中還有其他選項會影響 EXI 流的內容。其中一些選項,稱為 保真度選項,控制 EXI 處理器在 EXI 流中包含某些類型的項目的能力,例如 XML 注釋、處理指令和命名空間聲明。如果用戶對保留在 EXI 編碼中的此類項目之一不感興趣,他們可以選擇一個選項,通過不必包含該類型的項目來使 EXI 編碼更有效。因此,例如,如果用戶聲明不需要保留名稱空間聲明和前綴,則 EXI 流編碼器將放棄對這些內容進行編碼的能力,并且生成的 EXI 流可能更緊湊。還有另一個保真度選項,它控制簡單類型的屬性和元素的原始字符串值的保留。當此選項not被選中時,這些值的編碼效率更高(例如,類型為xsd:integer< /span> 將被編碼為二進制整數而不是字符串),但讀取器在讀回 EXI 流時不可能重建確切的原始字符串。在許多應用程序中,這種信息丟失是可以接受的,因此不應選擇此選項。
EXI 的最后一個主要特性是支持字節對齊和壓縮。用戶可以選擇以下四種對齊方式之一:(a) bit-packed 對齊方式,(b) byte-aligned 對齊,(c) 預壓縮,和 (d) 壓縮跨度>。Bit-packed 和 compression 是更緊湊的(compression 通常但不總是比 bit-packed) 更緊湊。Bit-packed 和 byte-aligned 是更快的(byte-aligned 可能比 bit-packed 稍快)。
precompression 和 compression 都將 EXI 流中的編碼數據排列到特定的布局中,其中所有可能相似的編碼數據項都靠近在一起。這種安排提高了應用于數據的壓縮算法的有效性。Precompression 本身不執行任何壓縮,因為它的唯一目的是為要應用到的外部壓縮步驟(EXI 處理器之外)準備 EXI 流EXI 流。壓縮 更進一步,將標準 DEFLATE 算法應用于每個相似的編碼數據項塊,以生成最終的 EXI 流。
-
處理器
+關注
關注
68文章
19414瀏覽量
231210 -
解碼
+關注
關注
0文章
184瀏覽量
27455 -
編碼
+關注
關注
6文章
958瀏覽量
54957
原文標題:OSS Nokalva:什么是EXI?
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
功率器件熱設計基礎知識
全新的半導體基礎知識
![全新的半導體<b class='flag-5'>基礎知識</b>](https://file1.elecfans.com/web2/M00/07/EE/wKgaombs22qATZvvAAEbwo0kJb0452.png)
國產芯片LT8712EXI:4K60分辨率的三通道視頻DAC
![國產芯片LT8712<b class='flag-5'>EXI</b>:4K60分辨率的三通道視頻DAC](https://file1.elecfans.com/web2/M00/F3/F2/wKgaomZ7s_2AZ9eCAAE65Jk0fzs732.png)
一文帶你了解LT8712EXI的優勢特點以及適用程序
![一文帶你了解LT8712<b class='flag-5'>EXI</b>的優勢特點以及適用程序](https://file1.elecfans.com//web2/M00/F2/F1/wKgaomZ2kd2AfBdyAABKLjbJhPA462.png)
評論