電子書籍の厳選無料作品が豊富!

普通、XML SchemaはXMLインスタンスの妥当性のチェックに使われますよね。
それではなく、XML Schema自体が、XML Schemaとして正しいものであるか
どうかをチェックするようなプログラムってありませんかね?

A 回答 (1件)

XML Schemaには、"Schema for Schemas"というものがあります。

これはまさに、XML Schema文書自体がXML Schemaとして正しいかどうかをvalidationするためのスキーマ文書です。
これは、仕様書(XML Schema Part 1)にも添付されてますが、 http://www.w3.org/2001/XMLSchema.xsd にあります。

これを使って、スキーマ文書のxsd:schema要素で xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd" とすれば良いはずです。
しかし、試してみたところ、Xerces-Java 2.2.0では、エラーが出て失敗しました。これは、"Schema for Schemas"が通常のスキーマ文書と異なって自己言及的であるためで、Xercesは特別に扱ってくれないようです。

対処方法としては、一応以下の2通りでしょうか。

(1) Xerces以外で探す
W3CのXSVというXML Schema Validatorがあるのですが、http://www.w3.org/2001/03/webdata/xsvにあるウェブ版で試してみたところ、ちゃんとうまくvaidationしてくれました。ローカル版もあります(参考URLからたどって下さい)。

(2) XMLSchema.xsdをローカルにコピーして変更を加えたものでvalidationする
anySimpleTypeから派生している型の宣言をコメントアウトすると、うまくvalidationできるようになりました。ちなみに、XMLSchema.dtdを探しにいってしまうので、DOCTYPE宣言もコメントアウトしておいた方が楽です。

Xercesで"Schema for Schemas"を使ったvalidationをするモードみたいなものがきっとあるはずと思っていろいろ探したことがあったのですが、見つけることができていません。

参考URL:http://www.w3.org/XML/Schema
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!