【问题标题】:Issue while Validating the well formed XML against XSD针对 XSD 验证格式良好的 XML 时出现问题
【发布时间】: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());
}

我正在寻找答案。

【问题讨论】:

标签: java xml xsd xsd-validation


【解决方案1】:

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

【讨论】:

  • 您好,请参考 xds 中的以下部分:- - - -
  • @SushantSood 您提供的链接不包含此信息。你能提供 XML 和 XSD 吗?
猜你喜欢
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多