- ベストアンサー
XML Schemaの妥当性のチェック
普通、XML SchemaはXMLインスタンスの妥当性のチェックに使われますよね。 それではなく、XML Schema自体が、XML Schemaとして正しいものであるか どうかをチェックするようなプログラムってありませんかね?
- みんなの回答 (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