【问题标题】:Java implementations are not required to implement RELAX NG validation via SchemaFactory?Java 实现不需要通过 SchemaFactory 实现 RELAX NG 验证?
【发布时间】:2014-07-22 20:04:35
【问题描述】:

背景:

我有一个 RELAX NG 模式和一些应该遵循该模式的 XML 文件。我正在尝试将 XML 文件验证为 Java 中的 Schema,但出现错误:

无法加载实现由 http://relaxng.org/ns/structure/1.0 指定的模式语言的 SchemaFactory

我发现 this post 有同样的问题,其中一个答案说,

Java 实现不需要实现 RELAX NG 验证 通过 SchemaFactory。因此,即使它在一种环境中工作,它也不是 便携...

问题:

如果不依赖 the Jing library 之类的东西,我是否无法为 RELAX NG 创建可移植验证器?

我试图避免在我的应用程序中使用外部库。

Java 验证:

        ...

        DocumentBuilderFactory builder = DocumentBuilderFactory.newInstance();
        builder.setNamespaceAware(true);
        SchemaFactory schfactory = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);

        Schema schema = schfactory.newSchema(new File("Configuration/Schema.rng"));
        builder.setSchema(schema);
        Validator validator = schema.newValidator();


        DocumentBuilder build = builder.newDocumentBuilder();
        Document doc = build.parse(new File(filepath));
        DOMSource source = new DOMSource(doc);

        validator.validate(source);

        ...

【问题讨论】:

    标签: java relaxng


    【解决方案1】:

    是的,这是真的。据我所知,W3C 定义的 XML Schema 是唯一可移植的模式语言。 RELAX NG 引入了常规 XML Schema 之外的其他功能。

    【讨论】:

      【解决方案2】:

      IBM Post 澄清了我的问题。

      开箱即用,JDK 不包含 RELAX NG 验证器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多