XMLとViX

概要

XMLは汎用的なデータ記述言語であり、W3C(WWWコンソーシアム)勧告となっている国際標準規格です。ViXではバージョン2.2より、汎用性・将来性・プログラミング上の取り扱いのし易さなどを考え、下記の場面でXMLを使用するようにしました。

互換性

アルバム及び総合変換の設定情報は、旧形式(VFOファイル)は読み込みのみ可能です。新規に保存する場合は、必ずXML形式になります。

プラグインデータベースファイル及びカタログテーブルファイルは、旧形式のファイルを読み込むと、XMLで保存し直します。XMLでの保存に成功すると、旧形式ファイルは自動的に削除されます。

ViXで出力する各XMLファイルのスキーマは、将来もなるべく下方互換性を維持するつもりでいますが、やむを得ず仕様を変更することもあるかもしれません。特にBatchConversionSettingsとAlbumSettingsは、他のソフトで使用することをあまり考えてなく、ViXの機能追加(設定できる項目の追加など)があれば、それに伴いすぐ変更すると思います。

各XMLファイルの概要

スキーマ別にViXの出力するXMLファイルについて、簡単に解説します。見出しは、XMLのルート要素のタグ名を表しています。まだスキーマ記述言語による定義がありませんが、おいおいXML Schemaなり、Relax NGなりで規定したいと思います。今のところは「ViXの出力するXMLが正しい」くらいに思っておいてください。

BatchConversionSettings・AlbumSettings

それぞれ、総合変換、及びアルバム保存・印刷・HTMLの設定情報です。ViXの設定情報保存のために定めたスキーマなので、他のソフトで活用することはあまり考えられていません。一個の数値に、各bitのオン・オフとして複数の情報が格納されていることもあります。

共通して、ルート要素直下の各要素にはtype属性がついており、要素の内容のデータ型を表します。XML Schemaのデータ型を真似ており、例えば"int"は32ビット符号つき整数、"string"が文字列といった具合です。特殊なデータ型が2つあり、"LOGFONT"はWindowsのLOGFONT構造体をそのまま子要素に含みます。"fileFilter"だとViXのフィルタの設定内容を子要素に含みます。

pluginDatabase

プラグインデータベースファイルです。プラグインが有効な状態でViXを起動したとき、あるいは初めてコマンドでプラグインを有効にしたときに、ViX.exeと同じフォルダにpluginDatabase.xmlというファイル名で作成されます。起動時にすべてのプラグインをロードすると低速になり、またメモリを食いますので、ViXではプラグイン自体は必要なときにロードするようにし、通常は利用可能なプラグインの情報だけを管理しています。このプラグイン情報が保存されているのがプラグインデータベースファイルであり、プラグイン情報を毎回取得しなくても済むようにしています。新たにプラグインが追加された場合、追加したプラグインだけを調査するようになっています。

ルート要素直下には1つ以上のsusiePlugin要素が並んでいます。1個のsusiePlugin要素が1個のプラグイン情報に対応しています。susiePlugin要素の子要素の意味は、ほとんどは参考文献に掲げているプラグイン仕様書と照らし合わせながらpluginDatabase.xmlを見て頂ければ想像はつくでしょう。state要素はViXのプラグイン設定上各プラグインが有効になっているかどうか、timeModify要素はプラグイン(SPIファイル)の更新日時を表します。

fileList

「一覧表の作成」で、出力形式としてXMLを選んだときに作成されます。また「ファイルから入力」で、エクスポートしておいたコメント・キーワードをインポートするのにも使われます。

ルート要素直下に1個以上のfolder要素があり、folder要素内には0個以上のfile要素が含まれています。file要素の子要素として、ファイルの情報が記述されます。detailInfo及びcatalogDataの各要素にはさらに子要素があり、それぞれ撮影情報をはじめとする付属情報と、コメント・キーワード等のカタログファイル内の情報を持っています。

「一覧表の作成」で「サブフォルダも対象」をオンにして出力したとしても、folder要素は入れ子になることはなく、ルート要素直下にのみ位置します。これはインポート・エクスポート双方の処理の簡略化のためです。

catalogTable

ホームフォルダに、「catalogTable.xml」のファイル名で保存される、カタログファイルと対象フォルダとの対応関係を記したXMLです。1つのカタログファイルにcatalogFile要素があり、その子要素としてカタログファイルの対象フォルダtargetPath、そのボリューム名volumeNameがあります。

カタログファイルの仕様のページも参照してください。

fileDivision

分割・結合機能で、分割元・分割後ファイル名など復元に必要な情報を記した分割制御ファイルとして出力されます。

圧縮の有無と形式を記したcompression要素、分割ファイル1個ごとの確認の有無であるconfirmation要素、分割後ファイル一覧のdividedFiles要素、分割元ファイル一覧であるoriginalFiles要素の順で記録されます。

その他仕様

ViXの出力するXMLは、すべてに共通して、その他下記のような仕様とします。

バージョン XML 1.0にのっとった整形式XML文書
文字コード UTF-8。ViXは必ずUTF-8で出力するというだけであって、UTF-8でなければならない、と規定するのではないことに注意してください。
拡張子 xml
名前空間 「http://homepage1.nifty.com/k_okada/schemas/(ルート要素のタグ名).html」。実際にこのURLにHTMLファイルがあるとは限りません。