スキーマのバージョニング
XML のスキーマを定義するとかならず発生するのがバージョンアップだ。どんなに素晴らしいスキーマを定義しても、更新は必ず必要になる。
そんなスキーマのバージョニングについての話題が Douglas 氏のブログで触れられている(ちなみに氏は XML Web サービスの Program Manger らしい)。
このポストによれば XML スキーマ(data contract)のバージョニングモデルにおけるバージョンアップに次の二種類の名前をつけているそうだ。
- Non-breaking change
- 新しいデータメンバの追加
- Breaking change
- 名前空間やローカル名の変更
- 非互換な方法でのデータメンバの属性の変更
- データメンバの削除
データ系 XML のバージョン管理を考える上で素直な方針だと思う。こういうものにきちんと名前をつけてもらえるとありがたい。
バージョンアップの規則以外にもバージョン番号をどこで明示するかも問題だ。たとえば HTML や Docbook では DOCTYPE 宣言で public identifier を使ってバージョン番号を付けていた。RELAX NG のように名前空間の最後がバージョン番号になっているケースもある。 XSLT ではルート要素の属性に version 属性がある。WS-* 系のスキーマは、名前空間に入っている日付が重要なようだ。