XMLメッセージでいくつかの検証を行うことができるように、かなり複雑なXMLスキーマをJavaのSchemaオブジェクトに解析ロードしようとしています。
私のコードは次のようになります。
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));
私のスキーマにはかなりの数のインポートがあります:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
<xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>
...等。スキーマをロードしようとすると、多くのエラーが発生します。これに関連する別の質問に基づいて、リソースリゾルバーを指定する必要があるように見えますが、これはデフォルトで処理する必要があるものではありませんか?
もしそうなら、私が書いているアプリケーションを実行する場所またはベーススキーマファイルに相対的な場所にスキーマを配置する必要がある特定のディレクトリはありますか?
最後に、XMLSpy などでスキーマをロードすると、問題なく動作し、XML インスタンスを問題なく検証できます。