- - PR -
流通ビジネスメッセージ標準のXML Schemaによる解析
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-20 22:34
[環境]
JDK1.5.0_12 JAXP デフォルトのxerces 流通ビジネスメッセージ標準ver1.0のサンプルXMLと標準スキーマを使用して、SchemaFactoryでバリデーションを行いました。 ですが、 org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'sh:StandardBusinessDocument'. 行:11 のエラーが出てしまいます。 ソースは
のようにしています。 (pstrXMLの内容は経済産業省から送られてきたサンプルのxmlファイルの文字列が入っています。) このコードで名前空間のない単純なXSDでの検証は正常に行えました。 また、エラーメッセージにある'sh:StandardBusinessDocument'はxmlのルートタグで、
と記述されています。 DOMツリーの作成はうまくできるの、たぶんxsdの名前空間などの解決ができていないのでは?と思うのですが、 標準のXSDは膨大すぎてどこから追っていいのかわかりません。 schemaLocationの指定が悪さをしているのか?と思い削除して上記のコード解析してみましたが 同様のエラーが出てしまいました。 投稿するカテゴリーも迷ったのですが、XMLのほうにしてみました。 どなたかわかりそうな方がいらっしゃいましたら よろしくお願いします。 | ||||||||
|
投稿日時: 2007-09-20 23:40
XML系のプログラムは何年もしていないので的外れかもしれませんが・・・
Javadoc見る限り、 StreamSourceのコンストラクタはFile、Stringなどの引数がありますが Fileオブジェクトにしてみるか、URI構文に沿ったString型で試してみてください。 | ||||||||
|
投稿日時: 2007-09-21 11:37
ありがとうございます。
以下のようにしてみましたが結果は同様でした。
知識が浅いながらも落ち着いてxsdを解析してみました。 SGE_OrderProxy1P.xsdが会席に指定すべきTOPのxsdだと思い、このファイルのみをスキーマに指定していました。 が、StandardBusinessDocumentタグが宣言されているStandardBusinessDocumentHeader.xsdをどのxsdファイルも インクルードしてくれていないことに気がつきました。 解析対象のxmlのStandardBusinessDocumentタブのschemaIncludeでは StandardBusinessDocumentHeader.xsdを指定しているので、 もしかして、と思い、このxsdもスキーマクラスのコンストラクタに 渡してあげるようにしてみたところ無事にバリデーションできました。 お騒がせしました。
|
1