schema验证XML文件大家听的肯定很多了,但是它仅仅能验证某些方面,比如某个元素出现的次数、某个属性是不是必须出现的等等,但是它也有不能达到的方面。例如,我要验证book这个元素的value属性,只能在“java”、“C++”这两者之内取值,而不能是另外的值,此时schema就无能为力了。
schematron就是为了类似的问题而产生的。schematron继承了schema的优点,即它也是采用了XML语法,这也是schema优于DTD的一个方面。schematron定义了一些元素:pattern、rule、assert、report以及相应属性来限制元素及属性的取值,使用XPath来定位元素位置。schematron的官方网站是www.schematron.com/要,官网上有个PPT对schematron有很详细的介绍,并且介绍了如何使用schematron实现xml的验证方法。
关于验证方法这里就要详细说一下了,schematron guide这个ppt上介绍了几种方法,对于java语言来说主要有两种。
第一方法,利用apache公司的Xalan技术,它是基于XSLT的。过程是这样:把写好的schemetron文件(后缀为.sch)与skeleton1-5.xsl文件作为输入,产生一个XSLT文件,产生的XSLT文件再与需要验证的XML文件作为输入,输出验证结果。
把文件①schematron文件(.sch)②skeleton1-5.xsl文件③要验证的XML文件放入一个文件夹目录下。
打开DOS命令窗口,把当前位置移动到上面所说的文件夹目录下,分别输入下面两行命令:
java org.apache.xalan.xslt.Process -IN books.sch -XSL skeleton1-5.xsl -OUT generated.xslt
注:其中,books.sch是已编辑好的schematron文件 generated.xslt是要输出的XSLT文件名,可自行定义这个文件名
java org.apache.xalan.xslt.Process -IN books.xml–XSL generated.xslt -TEXT
注:books.xml即所要验证的XML文件, generated.xslt是刚刚生成的文件
验证的结果会在命令窗口中输出。
第二种方法:利用Jing
这种方法跟第一种方法类似,也是要在DOS命令窗口中输入相应命令来进行验证,本人没有对这种方法进行深究。
在DOS命令窗口进行验证很不方便,每次去敲那几行命令让人很烦,所以我在apache公司网站上找到了源代码,自己编辑了java类来实现验证。验证时也发现了问题,验证到第一个问题后程序就不对剩余的内容进行验证,即验证结果只显示XML文件的第一个错误。这个结果显然不是我想要,所以要继续研究研究。
附:xml文件主要的验证方法有DTD、Schema、RELAX NG(读作relaxing)、schematron
DTD,XML Schema,RELAX NG都是基于语法的,而Schematron是基于规则的
RELAX NG的优点就在于语法简单,而且使用了XML语法,比起W3C XML Schema来有一定的优势
分享到:
相关推荐
patterns found in XML documents. It relies almost entirely on XPath query patterns for defining rules and checks.Schematron validation rules allow the author to specify a helpful error message which ...
它基本上按顺序执行以下操作: 识别实际的xml格式验证xml文件(使用架构和schematron规则) 生成定制报告/从xml文件提取定制数据计算接受状态(根据提供的方案和规则) 验证器取决于用于完全配置过程的自定义。...
格式不正确的XML的命令行避难所(CRUX) 对具有Java运行时的任何平台的XML模式和Schematron验证的命令行和库支持。执行Crux JAR还是MacOS和Unix / Linux系统上的可执行文件(可执行ZIP),并且可以由以下人员使用: ...
XML ValidatorBuddy通过易于使用的XML验证器支持XSD、DTD和Schematron规则。 在编辑器中直接将XML或JSON转换为HTML,或者对磁盘上的多个文件一次性应用XSL转换。 具有XML相关增强功能的独特Explorer窗口使每个人都...
oXygen验证XML,XSL和XQuery,FO,XSD,RNG,RNC,NRL,DTD的Schematron,WSDL和CSS内容,报告与描述和行号信息错误,以及将它们标记在文档中时,验证您键入时启用。更多的文件可以被逻辑地组织在项目中。它配备了...
XML验证项目基于Javax.xml.validation.Schema的XML验证库,用于验证模式以及Schematron的NCAR / crux项目发达的环境Java Open JDK1.8-040 蚀氧包装环境mavan包例子// Initiate Validate Controller class with input...
用朴素的语言辅以大量真实可信的实例,来帮助消化理解XML在C#编程...XML 的验证(DTD、XML Schema、RELAX NG 和Schematron);XML的处理(XPATH 和XSLT);与数据库的结合(XQuery);在通信中的应用(RSS、SOAP、WSDL和AJAX)
基于DTD的XML验证器 目的 对于某些大文件, xmllint失败或花费很长时间。 使用Java的库进行验证的解析或多或少地执行了... 通过对XSD,RNC,RNG,Schematron进行验证 基于代码进行解析 执照 不要怪不要卖一切都很好。
从RBAC模型的角度出发,提出了一种基于XML的协同设计的RBAC访问控制,利用XML作为访问控制的表达形式,使得系统具有良好的灵活性和可操作性...同时,使用Schematron XML 验证语言弥补了XML Schema在文档结构约束中的限制。
focheck在oXygen框架中捆绑了Relaxing NG模式和Schematron语法,以便在oXygen XML Editor中对XSL-FO(包括FO和XSL 1.1中添加的属性)进行详细验证。 focheck还可以验证AH Formatter提供的扩展名FO和属性,以改善格式...
Schematron 可以使用 Oxygen 之类的工具进行验证,也可以通过 XSL 转换与 Schematron 框架(可在官方 (?) Schematron 网站上找到: : 如有问题,请通过 lvanwalstijn (at) virtualcitysystems.de 联系我
Schematron,RelaxNG和XSD的验证规则现在可以与文档关联,允许使用多个模式和模式类型来验证XML实例文档。 7、新的 XSLT 3.0支持 提供对最新XSLT 3.0函数和子句的支持。 8、新的 Git源代码控制集成支持 通过在...
验证:RELAX NG(XML和紧凑语法),Schematron(1.5,ISO),W3C Schema(XSD 1.0)和DTD 自动完成:RELAX NG(XML和紧凑语法),W3C Schema(XSD 1.0) 您可以在包中找到一组基本的通用XML模式以及linter-...
通过针对v1和v2.1的官方ZUGFeRD schematron文件以及的EN16931 UN / CEFACT SCRDM v16B非耦合schematron进行验证,从而完成XML检查。 建立 在pom.xml目录中,使用./mvnw clean package编译jar。 要准备schematron...
CAM编辑器是领先的开源XML编辑器/验证/架构工具集,用于快速构建/部署XML / JSON / Hibernate... Java CAMV XML / JSON验证引擎是一个完整的交换测试框架[XMLUnit,TEAM(Schematron)]。 Java / Eclipse + Saxon / XSL
xcsde-rngval.zip,支持xml目录的xml验证器、schematron、dtd宏、relax ng schemasxml验证器支持xml目录、schematron、dtd实体、relax ng schemas
HNAP_Validator
-Schematron验证样式表-Genericode验证样式表此项目当前支持以下HR-XML-NL和UBL-NL消息版本:-NLCIUS(si-ubl-2.0.1)-UBL发票1.9-UBL发票1.8-UBL发票1.7-UBL发票1.6.3-UBL发票1.6.2-UBL发票1.1-SETU发票2.0-SETU...
网站上的应用程序,用于验证CCDA文档的schematron部分。 网址为示例网站 (请注意,此站点仅用于测试虚构文档,不适用于PHI ) 怎么运行的 转到基本URL(例如, 或您托管的位置) 在文本区域内,从元素开始粘贴C-...
XSLWeb XSLT和XQuery开发人员的Web应用程序框架 XSLWeb是面向XSLT和XQuery开发人员的开源和免费使用的Web开发框架。... 在每个XSLT转换步骤之后,可以添加可选的验证管道步骤(XML Schema或Schematron)以验证上一个转