前回からの続きです。
trangは無実だった!
問題はJAXBっぽいZOY!
というか変換成功したやつも悲惨やな…
しばらくはDOMが天下ですね、
空気で分かります。
2011年5月10日火曜日
2011年5月9日月曜日
ギャートラングサーン!!
ゴールデンウィークも終わり、
ブログも再開です。
PCでの書き込みができなかったのでスマートフォンからの投稿です。
trangでDTDからXMLスキーマに変換し、
それをJAXBでオブジェクトにしようとしました。
そしたらエラーが…ナンダコレ?
変換後のXMLスキーマを見たら、
何か違う…これは変換バグ!?
手作業の修正が必要なり…
エイリアスがらみは気をつけて!
追記:trangは無実だった!
ブログも再開です。
PCでの書き込みができなかったのでスマートフォンからの投稿です。
trangでDTDからXMLスキーマに変換し、
それをJAXBでオブジェクトにしようとしました。
そしたらエラーが…ナンダコレ?
変換後のXMLスキーマを見たら、
何か違う…これは変換バグ!?
手作業の修正が必要なり…
エイリアスがらみは気をつけて!
追記:trangは無実だった!
2011年4月22日金曜日
XMLの検証をバージョンごとに行う
XMLの検証にはDTDかXMLスキーマを使うわけですが、
自作しているといつの間にか複数のバージョンが登場しだします。
なので読み込みの部分で、
どのバージョンなのか調べてから検証しなければなりません。
ルート要素の"version"属性にバージョン情報があるとして、
どうやれば実現できるのか考えてみます。
まず最初に言いたいのは、
XMLスキーマに統一する必要があるということです。
"Trang"というツールでDTD→XMLスキーマの変換ができるのでやっておきます。
何かエラーが出たときは…うん、ごめんなさい。
そしたら読み込み部分の処理ですね。
では軽く解説を…
まずパース時のDTD検証は無効にしています。
検証はパース後にしたいですしね。
XMLスキーマに寄せた理由もここら辺です。
で、DOMでバージョン番号を取得します。
後は各バージョンのスキーマを使って検証を行うだけっと。
例ではif文ですが、Mapとか使ってさばくのが大人の醍醐味。
あ、Schemaオブジェクトはスレッドセーフだから作りっぱなしでOKです。
XMLファイルのスキーマ情報は無視している…はずです。
もし何か悪さをしたらDocumentBuilderにEntityResolverを設定して適当に受け流してください。
これでXMLの後方互換性はバッチリ!
(…例によって誰得情報だ。)
登録:
投稿 (Atom)