【发布时间】: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);
...
【问题讨论】: