通过SchemaFactory实现RELAX NG验证不需要Java实现吗?

时间:2014-07-22 20:04:35

标签: java relaxng

背景

我有一个RELAX NG Schema和一些应该遵循架构的XML文件。我正在尝试使用Java验证XML文件到Schema,我收到了一个错误:

  

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

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

  

实现RELAX NG验证不需要Java实现   通过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);

        ...

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

IBM Post澄清了我的问题。

  

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