Efficient XML Interchange (EXI、) とは、処理速度と計算機資源の利用を同時に最適化することを目指す拡張可能なマーク付け言語符号化規約のW3C勧告である。
背景 拡張可能なマーク付け言語 () 文書は可読性・拡張性に優れる反面、冗長性が高く容量が肥大化しがちである。これを解決する手段として、XML文書に汎用の(可逆)圧縮を施すことが考えられる。実際、オフィス文書のためのオープン文書形式 () や変倍ベクタ図形 () はDeflate算法に基づく圧縮形式に対応している。
しかし、整形式のXML文書は、その構造的特性を利用して汎用の方法より高い効率で圧縮が行える。更に、繰り返し登場する似通った文字列を集中的に処理することでも、高効率な圧縮が期待できる。EXIはそのような実装の一つである。
概要 原則 EXIは次の五原則を掲げている。 汎用 多くの機器がXML情報を通信し合うことを目的とする。特定の用途に向けた特殊な最適化は避ける。 最小 小規模な携帯機器及び組込み機器でも利用できるように、単純で洗練された手法であるべき。 効率 EXIの利用が望まれる環境に於いて、手作業で最適化されたバイナリ形式の小ささに匹敵せねばならない。 柔軟 多様なスキーマやその拡張などに対して柔軟で効率の良い処理をする必要がある。スキーマからの逸脱で符号化に失敗してはならない。 相互運用可能 既存のXML関連技術と上手く統合し、それらの変更を最小限に抑えるべきである
形式 大きく二種類の符号化方式を提供している。
評価
利点 省メモリ 特にスキーマ由来文法を用いる方式は省メモリである。
批判・欠点 EXIの活用が想定される省メモリ環境においては、XMLの構文解析自体が負担である。EXIは(その小さい容量によって)確かに通信量を軽減するものの、結局復号して尋常のXML(単なる文字列ではなくDOM, SAX, StAX相当の抽象化された構造情報)として扱わねばならないので、少メモリ環境に於けるXML利用に際しての問題点を半分しか解決しない。
また、仕様が複雑である為に実装が巨大になりがちである。
実装 OpenEXI - NagasenaはEXI標準の完全な実装であり、Java及び.NETで利用できる。アパッチ利用許諾第2.0版。 EXIficient - EXI実装の一つ。EXI4JSON(JSON向けEXI)用のプログラムも提供している。MITライセンス。
脚注 注釈
出典
参考文献
諸規格
関連項目 XML 可逆圧縮
外部リンク Efficient XML Interchange (EXI) Format 1.0 (Second Edition) - EXIのW3C勧告。 EXI for JSON - W3C作業部会が覚書として公開している、JSONに対するEXI。