我正在创建一个XML验证器,它将根据特定模式验证XML。我目前正在使用OASIS模式来验证针对该模式的断言。下面是模式,当它传递给SchemaFactory并创建模式对象然后xenc:EncryptedData元素未解析,导入的模式中存在xenc-schema.xsd“< / p>
当我创建一个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());
}
我正在寻找答案。
答案 0 :(得分:0)
似乎xenc
命名空间未在XML文件中声明,或者至少在整个元素xenc:EncryptedData
中声明。请发布您的XML文件。我在XSD文件中看不到EncryptedData
元素定义。