特定のスキーマに対して XML を検証する XML バリデーターの作成に取り組んでいます。現在、OASIS スキーマを使用して、そのスキーマに対してアサーションを検証しています。以下は、スキーマが SchemaFactory に渡され、スキーマ オブジェクトが作成され、インポートされたスキーマ xenc-schema.xsd に存在する xenc:EncryptedData 要素が解決されないときのスキーマです。
また、SchemaFactory のインスタンスを作成してスキーマをロードしようとすると、上記のスキーマにインポートされたスキーマを見つけることができません。
XML is not valid because
src-resolve: Cannot resolve the name 'xenc:EncryptedData' to a(n) 'element declaration' component.
インポートされたスキーマを見つけることができるスキーマ オブジェクトを作成するときに、SchemaFactory でインポートされたスキーマを解決するにはどうすればよいですか? 以下は私が書いているコードです:
...
System.out.println("Executing the value");
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(new File("D:\\saml-schema-assertion- 2.0.xsd"));
Schema schema = sf.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.setErrorHandler(new SAMLErrorHandler());
validator.validate(new StreamSource(new File("D:\\Saml.xml")));
System.out.println("XML is valid");
} catch (IOException ex) {
} catch (SAXException e) {
System.out.println("XML is not valid because ");
System.out.println(e.getMessage());
}
私は応答を求めています。