我可以告诉, JAXP通过默认支持W3C XML模式和RelaxNG从Java6.

我可以看到一些Api,主要是实验或不完整的, schematron.com 链接的网页.

是否有办法在证实在在Java,全面、有效和可以使用与JAXP API?

有帮助吗?

解决方案

支持预ISO在验证(注意,敬的执行情况是根据XSLT)。

还有XSLT实现,可以很容易地援引从Java。你需要来决定什么样的版本在你有兴趣,并然后获得相应的样式-所有的人都应该可以从schematron.com.这个过程很简单很简单,基本上涉及2个步骤:

  • 适用的骨架XSLT你在模式来得到一个新的XSLT样式表,这表示你在模式在XSLT
  • 适用所获得的XSLT上你的实例的文件或文件,以证实他们

JAXP只是一个API,它不需要支持放松NG从执行情况。你需要检查的具体实施的,你用它来看看这支持放松NG或没有。

其他提示

一个纯Java Schematron实现位于 https://github.com/phax/ph-schematron / 它带来两个XSLT方法和纯Java方法的支持。

您可以检查出 SchematronAssert (披露:我的代码)。是指主要用于单元测试,但你可以用它进行正常的代码了。它使用XSLT实现。

单元测试示例:

ValidationOutput result = in(booksDocument)
    .forEvery("book")
    .check("author")
    .validate();
assertThat(result).hasNoErrors();

独立验证示例:

StreamSource schemaSource = new StreamSource(... your schematron schema ...);
StreamSource xmlSource = new StreamSource(... your xml document ... );
StreamResult output = ... here your SVRL will be saved ... 
// validation 
validator.validate(xmlSource, schemaSource, output);

与SVRL的对象表示工作:

ValidationOutput output = validator.validate(xmlSource, schemaSource);
// look at the output
output.getFailures() ... 
output.getReports() ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top