`
xmarkgogo
  • 浏览: 29650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

schematron验证XML

 
阅读更多

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文件作为输入,输出验证结果。
xalan.jar可以在apache官网下载到,网址是:http://www.apache.org/dist/xml/xalan-j/,下载其中的文件:xalan-j_2_7_1-bin.zip,该文件解包之后,包含了四个jar包,把这几个包放到classpath中(即设置环境变量)。
skeleton1-5.xsl 这个文件下载地址是:http://nexml-dev.nescent.org/nexml/xslt/
把文件①schematron文件(.schskeleton1-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.xmlXSL generated.xslt -TEXT

注:books.xml即所要验证的XML文件, generated.xslt是刚刚生成的文件

验证的结果会在命令窗口中输出。

第二种方法:利用Jing

这种方法跟第一种方法类似,也是要在DOS命令窗口中输入相应命令来进行验证,本人没有对这种方法进行深究。

在DOS命令窗口进行验证很不方便,每次去敲那几行命令让人很烦,所以我在apache公司网站上找到了源代码,自己编辑了java类来实现验证。验证时也发现了问题,验证到第一个问题后程序就不对剩余的内容进行验证,即验证结果只显示XML文件的第一个错误。这个结果显然不是我想要,所以要继续研究研究

附:xml文件主要的验证方法有DTD、Schema、RELAX NG(读作relaxing)、schematron

DTDXML SchemaRELAX NG都是基于语法的,而Schematron是基于规则的

RELAX NG的优点就在于语法简单,而且使用了XML语法,比起W3C XML Schema来有一定的优势

分享到:
评论

相关推荐

    How to validate XML documents against Schematron rules

    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 Schema和Schematron验证XML文档

    它基本上按顺序执行以下操作: 识别实际的xml格式验证xml文件(使用架构和schematron规则) 生成定制报告/从xml文件提取定制数据计算接受状态(根据提供的方案和规则) 验证器取决于用于完全配置过程的自定义。...

    症结:命令行XML模式和Schematron验证器

    格式不正确的XML的命令行避难所(CRUX) 对具有Java运行时的任何平台的XML模式和Schematron验证的命令行和库支持。执行Crux JAR还是MacOS和Unix / Linux系统上的可执行文件(可执行ZIP),并且可以由以下人员使用: ...

    XML_Validator_Buddy.rar

    XML ValidatorBuddy通过易于使用的XML验证器支持XSD、DTD和Schematron规则。 在编辑器中直接将XML或JSON转换为HTML,或者对磁盘上的多个文件一次性应用XSL转换。 具有XML相关增强功能的独特Explorer窗口使每个人都...

    oXygen XML Editor(XML脚本编辑软件)

    oXygen验证XML,XSL和XQuery,FO,XSD,RNG,RNC,NRL,DTD的Schematron,WSDL和CSS内容,报告与描述和行号信息错误,以及将它们标记在文档中时,验证您键入时启用。更多的文件可以被逻辑地组织在项目中。它配备了...

    XMLValidation:带有模式和schematron的电子邮件XML验证程序的电子税收发票

    XML验证项目基于Javax.xml.validation.Schema的XML验证库,用于验证模式以及Schematron的NCAR / crux项目发达的环境Java Open JDK1.8-040 蚀氧包装环境mavan包例子// Initiate Validate Controller class with input...

    XML入门材料.pdf

    用朴素的语言辅以大量真实可信的实例,来帮助消化理解XML在C#编程...XML 的验证(DTD、XML Schema、RELAX NG 和Schematron);XML的处理(XPATH 和XSLT);与数据库的结合(XQuery);在通信中的应用(RSS、SOAP、WSDL和AJAX)

    dtdvalidator:根据旧版DTD验证XML

    基于DTD的XML验证器 目的 对于某些大文件, xmllint失败或花费很长时间。 使用Java的库进行验证的解析或多或少地执行了... 通过对XSD,RNC,RNG,Schematron进行验证 基于代码进行解析 执照 不要怪不要卖一切都很好。

    论文研究-协同设计系统中基于XML的访问控制实现.pdf

    从RBAC模型的角度出发,提出了一种基于XML的协同设计的RBAC访问控制,利用XML作为访问控制的表达形式,使得系统具有良好的灵活性和可操作性...同时,使用Schematron XML 验证语言弥补了XML Schema在文档结构约束中的限制。

    focheck:使用RELAX NG和Schematron的XSL-FO验证

    focheck在oXygen框架中捆绑了Relaxing NG模式和Schematron语法,以便在oXygen XML Editor中对XSL-FO(包括FO和XSL 1.1中添加的属性)进行详细验证。 focheck还可以验证AH Formatter提供的扩展名FO和属性,以改善格式...

    CityGML-ConformanceRequirements:CityGML 一致性要求的 Schematron 模式

    Schematron 可以使用 Oxygen 之类的工具进行验证,也可以通过 XSL 转换与 Schematron 框架(可在官方 (?) Schematron 网站上找到: : 如有问题,请通过 lvanwalstijn (at) virtualcitysystems.de 联系我

    Liquid.Studio2018 XMLtoXSD

    Schematron,RelaxNG和XSD的验证规则现在可以与文档关联,允许使用多个模式和模式类型来验证XML实例文档。 7、新的 XSLT 3.0支持 提供对最新XSLT 3.0函数和子句的支持。 8、新的 Git源代码控制集成支持 通过在...

    linter-autocomplete-jing:基于Jing的Atom中XML文档的自动完成和验证

    验证:RELAX NG(XML和紧凑语法),Schematron(1.5,ISO),W3C Schema(XSD 1.0)和DTD 自动完成:RELAX NG(XML和紧凑语法),W3C Schema(XSD 1.0) 您可以在包中找到一组基本的通用XML模式以及linter-...

    ZUV:使用Verapdf的ZUgferd验证器

    通过针对v1和v2.1的官方ZUGFeRD schematron文件以及的EN16931 UN / CEFACT SCRDM v16B非耦合schematron进行验证,从而完成XML检查。 建立 在pom.xml目录中,使用./mvnw clean package编译jar。 要准备schematron...

    XML Editor/Validator/Designer with CAMV-开源

    CAM编辑器是领先的开源XML编辑器/验证/架构工具集,用于快速构建/部署XML / JSON / Hibernate... Java CAMV XML / JSON验证引擎是一个完整的交换测试框架[XMLUnit,TEAM(Schematron)]。 Java / Eclipse + Saxon / XSL

    killbill-api-0.0.5.zip

    xcsde-rngval.zip,支持xml目录的xml验证器、schematron、dtd宏、relax ng schemasxml验证器支持xml目录、schematron、dtd实体、relax ng schemas

    HNAP_Validator:验证HNAP XML元数据的轻量级云解决方案。 这是一种在云端使用SaaS解决方案的方案,该方案利用Schematron文件并允许使用REST API验证元数据

    HNAP_Validator

    efactuur-pdf-nl:荷兰UBL和SETU发票的PDF生成-开源

    -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-fragment-validator:验证CCDA文档片段

    网站上的应用程序,用于验证CCDA文档的schematron部分。 网址为示例网站 (请注意,此站点仅用于测试虚构文档,不适用于PHI ) 怎么运行的 转到基本URL(例如, 或您托管的位置) 在文本区域内,从元素开始粘贴C-...

    xslweb:XSLT和XQuery开发人员的Web应用程序框架

    XSLWeb XSLT和XQuery开发人员的Web应用程序框架 XSLWeb是面向XSLT和XQuery开发人员的开源和免费使用的Web开发框架。... 在每个XSLT转换步骤之后,可以添加可选的验证管道步骤(XML Schema或Schematron)以验证上一个转

Global site tag (gtag.js) - Google Analytics