背景
我有一个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);
...
答案 0 :(得分:0)
是的,这是真的。据我所知,W3C定义的XML Schema是唯一可移植的模式语言。 RELAX NG引入了除普通XML Schema之外的其他功能。
答案 1 :(得分:0)
这IBM Post澄清了我的问题。
开箱即用,JDK不包含RELAX NG验证器。