Jintrick.netagenda2003年05月アーカイブ → 2003年05月18日

James Clerk氏が指摘するW3C XML Schemaの問題点

読んだ。以下、James Clerk氏が指摘するW3C XML Schemaの問題点についての感想。

1. 罠があって、
適当に勉強するとそうかも。
2. 理解が難しい
人によりけり。媒体によりけり。
3. XML Schema: Formal Descriptionが未完
個人的にどうでもいい。
4. 例えば「属性Xあるいは属性Yどちらかがあれば良い」とする制約を記述できない
間違い無くこれは欠陥だ。以前嵌った事がある。
5. 順不同内容モデルのサポートが貧弱
そう思う。ある順序に従った登場を否定する記述ができないというのは目から鱗。
6. データ型がモジュール化されていない
確かにビルトインのデータ型が多すぎるかも。用途によっては邪魔なのかな。 拡張性については良く知らないので何とも言えない。NCNameで参照とかだったら即XML Schema捨てだったけど、幸いQNameだし。そういう問題じゃあないんだろうな、多分。
7. ルート要素を示す手段がない。
確かにその手段はないけれど、ここで挙げられている例は眉唾。 手許の検証プロセッサでは、まず語彙が違うので検証失敗。bar要素にhttp://example.com名前空間を持たせても、 bar要素は宣言されていないというエラーメッセージが出る。通るわけない。検証プロセッサの問題では? ただ、人が読むものとしてルート要素が何であるのか分かりづらいので、幾ら論理的に自明だといってもやはりルート要素の明示手段はあった方が良いのかも。でも個人的にはコメントに記述すれば済む問題。
8. xsi(http://www.w3.org/2001/XMLSchema-instance)名前空間を持った属性を禁止する手段が無い
これは欠陥だ。xsi:schemaLocation属性があると、MSXMLは勝手にキャッシュを作成するので是非禁止したい、でもできなかったという経験あり。
9. 検証する場合としない場合とで、アプリケーションが受け取る解析されたデータが異なる
多分PSVI(Post-Schema-Validation Information set)のことを問題にしているのだと思う。例えばXML Schemaプロセッサで検証すると属性のデフォルト値が付加された形でXMLデータ(infoset)が渡されるので、検証しない場合とでアプリケーションが受け取るinfosetそのものが変わってしまう。XML Schemaユーザーは十分注意すべき点だと思った。

根の深い問題は9.かな。スキーマ言語の領分を超えているというか。ともかく当分の間付き合っていくしかないから、問題点をきちんと見極めておかないとねー。鬱だ。


webmaster@jintrick.net
公開: 2003年05月18日
カテゴリ: スキーマ