コンテンツへスキップ
ものがたり
戻る

2005-01-11

つぅかこれすげー…

1週間で作るXML検証系?

NvdlReaderはできた。つもり。あとNvdlValidatingReaderさえ出来ればいっちょ上がり。といっても単なるバリデータとしてのXmlReaderというより、ノードをプッシュするXmlReaderの実装みたいなものを作らなきゃいけないはずなんだけど。相変わらず、セマンティクスはほとんど読んでいない。いいのかこんなんで。

うーん、schema rewritingもvalidation provider抽象クラスに追加せんと…ていうか連休が終わっちゃったから、明日からまたDataSetの仕事をやっつけねば…

DataSet.WriteXmlSchema() XmlSerializerNamespaces sucks

なんで? それは、以下のようなコードを実行してみると分かります:

dataset.WriteXmlSchema (Console.Out);

IXmlSerializable ixs = dataset;
XmlSchema schema =ixs.GetSchema ();
schema.Write (Console.Out);

お手元のスキーマで試してみれば分かりますが、この出力は全然違うものになります。つまり、MSのDataSet.WriteXmlSchema()は、XmlSchemaを使っていないのです。ちなみにXmlSchema.Write()はXmlSerializerを使っています1

重要な違いはxmlns=""の出力。これ、どう逆立ちしてもXmlSerializerでは出力できないんですね。

…というわけで、DataSetのためだけにXmlSchema writerを別途自作するのはあまりにもバカバカしいので、MSにこれどうにかしろ、と投げつつ、Lluisに「MSのXmlSerializerの設計のここは間が抜けてるから真似しないでおこうよ」とお願いしてみることにしました。bug #68008みたいなのはMSには投げられなかったのかねぇ…?

Footnotes

  1. 書き込みエラーを起こすようなXmlWriterをXmlSchema.Write()に渡してみよう


この記事を共有:

前の記事
1週間で作るXML検証系?
次の記事
the adult day