著作一覧 |
choiceヤバイ。choice使うよりminOccurs="0"の要素としたsequenceのほうがいいんじゃないか? choiceの価値はそこに並んだ要素のいずれか1つが選択されていることが検証できるという検証側の楽さであって、XML消費者および生産者にとってはsequneceの中で必要な要素を入れておくで十分な場合が多いというか、しょせんプロトコルなんだから十分だ。
さらに考えると検証側の楽さというか、スキーマ設計者の楽さ(choiceにはビジネスルールは無くchoiceだという事実だけがあり、minOccurs="0"の要素を並べたsequenceではこのうちどれか1つだけを入れるというのはビジネスルールとしてしか表現できない=文字通り表現できない)。
と考えるとchoiceは正当だな。正当なのにヤバイと感じる理由はなんだろうか、と考えてみればCastorの実装に突き当たる。
Casotrの実装が検証の手間をおそらく省くためにchoiceとchoiceItemという2つの面倒なノードとして表現していることが問題なのか。こいつのせいで、choiceでくくられた要素の取り出し(と作成)とsequenceでくくられた要素の取り出し(と作成)が異なる方法(というかパスというか)となるため、ソースの自動的な生成がやたらと面倒なのだ。
追記:なんて言っている時間があるなら、XSDからRNGに変えるか(Relaxerの生成コードは使える)、Castor以外のスキーマコンパイラを探すか、自作するか(そりゃ面倒だからごめんだ)、打つ手はあるのだが考えなきゃならないポイントがいろいろあるんだな、これが。
ジェズイットを見習え |
XSD -> WXS?
W3C XML Schema = WXS<br>なるほどこんな呼び方があるんですね。しかも正しいなぁ。