`
xmarkgogo
  • 浏览: 30705 次
  • 性别: 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

    ### 如何验证XML文档符合Schematron规则 #### Schematron模式概述 Schematron是一种简单而强大的结构化模式语言,用于对XML文档中的模式进行断言。它几乎完全依赖于XPath查询模式来定义规则和检查。Schematron验证...

    验证器:使用XML Schema和Schematron验证XML文档

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

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

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

    ant-schematron.jar.zip

    Schematron是一种XML模式语言,用于验证XML文档的结构和内容。相比于XSD(XML Schema Definition)等传统XML验证方法,Schematron更加关注业务逻辑,允许编写更复杂的验证规则。在XML文档处理中,Schematron提供了一...

    XML校验工具,可以用来进行XML合法性检验

    - **DTD(Document Type Definition)校验**:基于DTD文件来验证XML文档的结构是否正确。 - **XSD(XML Schema Definition)校验**:通过XSD文件来校验XML文档的结构和内容是否符合预期。 - **Relax NG校验**:使用...

    schematron规则简单总结

    Schematron是一种基于XML的模式语言,主要用于验证XML文档的正确性和完整性。与DTD(Document Type Definition)和XSD(XML Schema Definition)不同,Schematron允许创建更加灵活且复杂的验证规则。Schematron通过...

    XML_Validator_Buddy.rar

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

    elife-schematron:Schematron文件来测试eLife XML

    4. **脚本和工具**:压缩包可能还包括一些命令行脚本或工具,用于运行Schematron验证,或者帮助用户集成验证过程到他们的工作流中。 5. **README文件**:通常会有一个README文件,详细解释如何使用这个工具集,包括...

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

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

    hibernate-0.9.zip

    这个压缩包内的"ugli schematron验证器"可能包含源代码、构建脚本、测试用例以及使用说明,为开发者提供了一种有效检查和验证XML数据的方法。通过集成到开发流程中,开发者可以尽早发现并修复潜在的数据问题,从而...

    xml 高级编程1-6

    - **XML签名**:验证XML文档的完整性和来源真实性。 以上是XML高级编程1-6中的核心知识点,涵盖了XML的基础概念、解析、验证、查询、转换、Web服务应用以及安全等方面。学习这些内容将有助于开发者深入理解和有效...

    perl 对 xml的详细操作

    Perl 社区还提供了用于XML验证的工具,如 XML::Schematron,它基于XSLT实现XML验证。此外,XML::REX 利用正则表达式进行XML文档的初步分析,而 PYX 是一个将XML转换为PYX格式的工具,便于阅读和调试。 在XML转换和...

    XML/database课件

    4. Schematron:国际标准化组织(ISO)认可的模式语言,强调了规则和断言,适合描述复杂的验证规则。 XML查询: 为了检索XML文档中的信息,有以下几种查询语言: 1. XPath:用于选取XML文档中的节点,如元素、属性...

    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 高级编程(PDF3)

    - 验证器:使用DTD或XML Schema验证XML文档是否符合指定的约束和规则。 - Relax NG和Schematron:是其他两种非W3C标准的验证工具,提供更灵活的模式定义。 4. XSLT(Extensible Stylesheet Language ...

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

    可能使用了Python的网络请求库如requests来构建REST API,以及可能使用lxml或xmlschema等库来处理和验证XML数据。 REST(Representational State Transfer)API是HNAP_Validator的核心接口,允许用户通过HTTP协议与...

    XML入门材料.pdf

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

    Schematron:用C#编写的.NET的Schematron ISOIEC标准处理器

    这意味着开发者可以利用.NET平台的丰富功能和C#的简洁语法来集成和使用Schematron验证。 在标签中提到了"C#",这再次强调了这个处理器是使用C#语言实现的。C#是一种面向对象的、现代的编程语言,广泛应用于Windows...

Global site tag (gtag.js) - Google Analytics