0

我正在创建一个 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());
}

我正在寻找答案。

4

1 回答 1

0

似乎xenc没有在您的 XML 文件中声明命名空间,或者至少没有在整个元素中声明xenc:EncryptedData。请发布您的 XML 文件。EncryptedData我在您的 XSD 文件中没有看到元素定义。

于 2013-10-30T08:56:48.437 回答