1

我想根据提供的 RELAXNG 模式验证 XML 文件。在网上搜索给了我提示,通过提供适当的模式语言来使用 SchemaFactory 创建一个模式实例。所以根据我的要求,我使用了:

SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);

但是运行时抛出了以下异常:

线程“主”java.lang.IllegalArgumentException 中的异常:没有实现由指定的模式语言的 SchemaFactory:http ://relaxng.org/ns/structure/1.0可以
在 javax.xml.validation.SchemaFactory.newInstance(SchemaFactory .java:207)

我正在使用 Java6 并观察到只有 'W3C_XML_SCHEMA_NS_URI' 有效。其余所有架构 URI 都会引发类似的异常。

我对使用 XML 验证 API 相当陌生。如果我没有正确使用,有人可以为我提供适当的用法吗?

谢谢和问候,
科亚

4

5 回答 5

2

Java API 对 RNG 的支持很差,它从未真正受到关注。我知道没有处理它的 Java API 实现。我建议将架构转换为 XML 架构(使用Trang或类似的),然后对其进行验证。

于 2009-07-22T07:50:15.613 回答
0

RNG 不像 XML Schema 那样被广泛支持。您应该始终首先考虑使用 XSD。

于 2009-07-22T08:05:18.530 回答
0

我已经成功地使用 Java 6 针对基于 XML 的 RelaxNG 模式验证了文档,请查看:

如何使用 RELAX NG 模式和 JAXP 验证 XML 文档?

不知道是否相关,只是指出:-)。

于 2010-03-31T22:39:25.280 回答
0

msv在 Java 中;我想它有一个可以使用的清晰 API,但我只在命令行和脚本中使用过它。

于 2009-07-22T08:14:11.587 回答
0

Kohsuke Kawaguchi 显然为 jaxp 编写了一个适配器库以使用松弛验证器,请参见此处此处

于 2009-07-22T11:34:30.573 回答