manifest.xmlの仕様についてxsdに記述されているREから解説を試みる
先日Adobe公式ユーザーフォーラムのブログにてmanifest.xmlをXSDファイルを利用して検証する方法を書いたのですが、それに関連してもうひとつ踏み込んだ事を書いておきます。
もう、そのまんまなのですが、manifest.xml用のXSDファイルにはValidater通す時のために正規表現による定義が施されているプロパティが幾つかあります。それらに関して仕様は英語でクソ丁寧に書かれていますが、空気を読まずに正規表現から読み解くなんて事をやります。
今回は以下にリストアップされたものについてです。
- ID
- Version
- RangedVersion
- InclusiveRangedVersion
- RelativePath
- LocalizableString
- Size
ID
もうそのまんまなのですが、エクステンションのIDとかのいつもリバースドメインで書けって言っているやつです。
こちらのREは以下のようになっています。
[A-Za-z0-9._\-]+
英数の大文字及び小文字及び「.」とか-_の通常URL記述と合致します。ちなみにAdobe社のサンプルでは「com.adobe.CEPHTMLTEST.Panel1」の様な記述となっています。
Version
こちらバージョンなのですが、エクステンションのバージョン記述とかに使います。このmanifest.xml内では複数のバージョンっぽいものが利用されますが混同しないように注意が必要です。こちらのREは、
\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?
この様になっていて、この構造から最低メジャーバージョンの数字があれば良いことになっているのがわかります。通常はメジャー、マイナー、マイクロの3つの整数が「.」で連結した形をとります。しかし、マイクロの後ろにもう一つグループがあるのが見て取れます。こちらは構造からするとマイクロの後ろに単語を含むことが出来るようになっているのがわかります。これは「.trial」という文字列を付けることによってこのエクステンションがトライアル用であることを明示するためのものです。有料プラグインのお試し用のものに付けられるものです。
ちなみにマイナーとマイクロが省略された場合はどちらも0と解釈されます。また、各数値は最大9桁まで許容されています。
Range Version
レンジと言うぐらいですから範囲を示します。基本は2つのVersionが配列に含まれるという形になります。もちろん前述の「.trial」も含めることが可能です。また、省略形式が定義されていて、これは低い方のVersionをひとつだけ設定することにより当該バージョン以上というレンジを設定したこととなります。
(\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?)|([(\[]\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?,?\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?[)\]])
多くのエクステンションではマイクロまで記述されませんが、7.0.5は7.0を超えているという事に注意が必要です。
InclusiveRangedVersion
インクルーシブってやつは構造的には全くRangeVersionと同一です。しかしながら、その数値の解釈に違いがあります。
まず、配列として2つの数字がある場合はRangeVersionと同様に最低から最高の範囲の定義です。しかし、数値が一つの場合はその数値そのものが該当するバージョンとなります。
これが利用されるのはDependency(エクステンションの依存関係の定義)でのVersionプロパティです。
(\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?)|(\[\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?,?\d{1,9}(\.\d{1,9}(\.\d{1,9}(\.(\w|_|-)+)?)?)?\])
この様にRE的には全く同一となります。
RelativePath
ファイルパス関連です。
\./.+
この様に「./」で始まる相対パスを参照する形となります。
LocalizableString
manifest.xmlにはいくつかローカライズ可能なプロパティがあります。
%[^%].*
%で始まる文字列で先頭の「%」以外には「%」を入れてはいけません。
Size
こちらはREがありませんが正の整数となります。
以上で今回はおしまいなのですが、結局は正規表現の範疇を超えた解説となってしまっていますが気にしないでください。
…オマケ
Geometryのsize指定ですが、これはピクセル数を整数で指定するようになっています。これを外して「ScreenPercentage」ってタグでHeightとWidthを設定してやるとスクリーンサイズに対する相対的な割合(0〜100)で指定することが可能です。