OpenXMLでもそうした構造を示すXMLファイルを複数使って文書を構成している。WordやExcel、PowerPointは、XMLの構造を解析してグラフィカルに表示するためのアプリケーションといえるわけだ。複数のXMLファイルや文書内で使われている画像は、1まとめにしてZIP圧縮され、それを.docxなどの拡張子にして保存する仕組みだ。

実際、OpenXMLで保存したファイルの拡張子を「.zip」に変更して解凍ソフトでファイルを伸長してみると複数のXMLファイルと(あれば)画像ファイルなどで構成されていることが分かる。

つまり、Office製品以外でも、ZIP解凍してXML文書を取り出して、内部のデータを利用できるのだ。たとえば別のアプリケーションで実際の文章だけを利用したい場合は、本文が記されたXML文書を取り出し、XML要素を除いて使えばいい、ということになる。

「test.docx」の拡張子を.zipに変更して解凍したファイル。内部には「word」というフォルダがあり、その中にそれぞれのXML文書が保存されている

同様に、ZIPファイル内のXMLデータを外部のアプリケーションが書き換えても、Wordで開き直すと、その部分のデータが更新されて表示される。そのため、WebアプリケーションがExcelの価格表データ(xlsxファイル)を読み込み、その中の製品名と価格データを取得、Webページに表示したり、Webアプリケーションからその価格表に変更を加え、その加えられた変更をそのままExcelで表示したりといったことが可能になる。

また、企業のロゴが変わった場合に、企業内の定型文書などのロゴ画像も変更しなければならない時、今までだったら1つずつファイルを開いて変更するしかなかった。OpenXMLファイルだったら、実質ZIP圧縮ファイルのため、その中のグラフィックフォルダ内にある特定画像ファイルを置き換えるバッチを作成すれば、一括してロゴ画像を変更する、といったこともできる。

他にも、ファイルの一部が破損したり改ざんされたりしても、ZIP解凍して中身を確認して、壊れていない部分だけを抽出して復元させる、といった安全性の向上も実現できている。

OpenXMLは、ほとんどがテキストファイルであるXMLファイルで構成されており、それをZIP圧縮するため、圧縮効率がいいのもメリットだ。マイクロソフトによれば、従来の「.doc」形式で保存して126MBだったファイルが、「.docx」で保存すると5MB弱まで縮小できたそうだ。

「test.docx」をZIPに変え、解凍して出たファイルの中から本文が入力されたXMLファイルをInternet Exploreで表示したところ

「test.docx」をWordで開くとこんな感じ