首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Schematron的Uri

Schematron的Uri
EN

Stack Overflow用户
提问于 2014-10-31 04:46:06
回答 3查看 580关注 0票数 0

实际上,我正在尝试在Java中使用schematron验证xml文件。我有以下声明:

代码语言:javascript
复制
SchemaFactory factory = SchemaFactory.newInstance("http://www.ascc.net/xml/schematron");

但是当我运行这个程序时,我得到了这个错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.IllegalArgumentException:  No SchemaFactory that implements the schema language specified by: http://www.ascc.net/xml/schematron could be loaded

有人能帮上忙吗?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-01-14 00:12:03

或者,您可以使用https://github.com/phax/ph-schematron/根据SCH文件验证XML。它既提供“纯”验证,也提供基于XSLT的验证。

票数 2
EN

Stack Overflow用户

发布于 2014-10-31 05:28:12

您使用的是哪个版本和实现?

不管怎样,试一下:

代码语言:javascript
复制
http://purl.oclc.org/dsdl/schematron

这在ISO Schematron中进行了更改,http://www.ascc.net/xml/schematron是旧的URI。

specification

ISO Schematron现在在四个实际方面与Schematron1.5有所不同:

与其他ISO语言一样,使用永久URL (PURL)采用了一个新的命名空间:http://purl.oclc.org/dsdl/schematron

票数 1
EN

Stack Overflow用户

发布于 2014-10-31 07:38:28

否实现架构的SchemaFactory

并不一定意味着Uri是错误的(您的Uri已经过时了,请参阅lexicore's answer)。

SchemaFactoy是一个abstract类,它隐藏了这样一个事实,即需要有一个特定于模式的子类来理解模式。有标准Uris /模式的实现,但似乎没有默认Java安装中包含的schematron的实现。

您可以在newInstance方法的文档中找到如何提供自己的实现的“说明”

要查找给定模式语言的SchemaFactory对象,此方法将按以下顺序查找以下位置...

  • ..系统属性"javax.xml.validation.SchemaFactory:schemaLanguage“..
  • $java.home/lib/jaxp.properties ..
  • 服务提供程序..匹配资源目录META-INF/services.

中的javax.xml.validation.SchemaFactory

这三个中的最后一个可能是最有趣的。如果您感兴趣,http://docs.oracle.com/javase/tutorial/ext/basics/spi.html会更详细地解释java中的服务提供者模式。

但我猜您不想实现自己的schematron验证器,您只想使用一个验证器。如果这两种方法中的任何一种对你有效,请尝试。它们是在使用谷歌搜索ServiceFactory schematron时出现的

可能还有更多的方法,而且似乎还有其他几种方法似乎不使用这种ServiceFactory路径。请参阅Where can I find a Java implementation of an ISO Schematron validator?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26662945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档