【发布时间】:2013-10-30 08:36:27
【问题描述】:
我正在创建一个 XML 验证器,它将针对特定模式验证 XML。我目前正在使用 OASIS 模式来验证针对该模式的断言。以下是模式传递给 SchemaFactory 并创建模式对象然后 xenc:EncryptedData 元素未解析,该元素存在于导入的模式 xenc-schema.xsd"
当我创建 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());
}
我正在寻找答案。
【问题讨论】:
-
我正在使用的 Oasis 模式部分在 :docs.oasis-open.org/security/saml/v2.0/… 共享
标签: java xml xsd xsd-validation