- PR -

XercesC++でのバリデーションの方法が分かりません

1
投稿者投稿内容
縞芋
会議室デビュー日: 2005/08/03
投稿数: 9
投稿日時: 2005-08-03 23:09
初めまして、XML初心者の縞芋と言います。
ご存知の方いらっしゃいましたら、ご教授願います。

XercesC++(ver2.6)で外部からXMLSchemaを読み込んでXMLのバリデーションを行いたいのですが
リファレンスを読んでも方法が分かりませんでした。

インスタンス側ではSchemaLocationでのスキーマの指定はしていないので
LoadGrammarやsetExternalSchemaLocationを利用して挑戦してみているものの
普通に実行されるのですが、どうやらバリデーションはしておらず
意味の無い文字列を入れてもバリデーションが通った事にされてしまいます。

方法が間違っているものと思い、調べてみているのですが分からないまま時間が過ぎてしまいました。

どうか、方法をお教えください。
宜しくお願い致します。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-08-05 00:12
http://xml.apache.org/xerces-c/schema.html

Associating Schema Grammar with instance document
Schema grammars can be associated with instance documents in two ways.
--------------
実例ドキュメントに図表文法を関連させること
図表文法は2つの方法で実例ドキュメントに関係していることができます。
---------------
で 不足でしょうか。

[ メッセージ編集済み 編集者: MMX 編集日時 2005-08-05 00:26 ]
縞芋
会議室デビュー日: 2005/08/03
投稿数: 9
投稿日時: 2005-08-05 16:13
ご返答ありがとうございます!

教えていただいたページを下にもう一度やり直してみた所、
何とかバリデーションが通って結果が出るようになりました!
ありがとうございます!

バリデーションに成功した後に一つ質問が浮かび上がったのですが
よろしいでしょうか?

setValidationSchemeを設定すると
setDoValidationは必要なくなるのでしょうか?
このsetDoValidationがどの様な作用があるのかが分かりません。
Please use setValidationSchemeと言うのは
こちらを使ってください、と言う意味で取っているのですが
間違っているのでしょうか…。

是非とも宜しくお願い致します!m(__)m
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-08-05 17:46
deprecated (非推奨)
が付いている。
setValidationScheme
には、以下が指定できるように、なっています。
Val_Auto: The parser will report validation errors only if a grammar is specified.
Val_Always: The parser will always report validation errors.
Val_Never: Do not report validation errors.
ーーーーーーーーー---------------
非推奨 API
http://imux3005.nunokawa.soft.iwate-pu.ac.jp/java/14x/docs/ja/guide/misc/deprecation/
まだ deleted(廃止) じゃないということ

[ メッセージ編集済み 編集者: MMX 編集日時 2005-08-06 09:05 ]
縞芋
会議室デビュー日: 2005/08/03
投稿数: 9
投稿日時: 2005-08-08 13:33
なるほど、非推奨と言う事だったのですね。

という事はどちらを利用してもいいが、
出来ればsetValidationSchemeを利用する方が良いという事なのですね。

教えて頂き、ありがとうございます!
調べが足りていなかった様なので、
もう少し調べて勉強し直して見ます。

MMXさん、本当にありがとうございました!m(__)m
1

スキルアップ/キャリアアップ(JOB@IT)