Java 使用XML模式、DTD、RelaxNG和Schematron验证DocBook文档

Java 使用XML模式、DTD、RelaxNG和Schematron验证DocBook文档,java,xml,validation,relaxng,Java,Xml,Validation,Relaxng,在Java应用程序中,我必须验证DocBook格式的不同版本的XML文档。DocBook 4基于DTD,DocBook 5基于RelaxNG/Schematron。什么是针对不同模式语言进行验证的合适方法?我找到了Oracle多模式XML验证器(MSV)、JARV和oNVDL。后者似乎不受欢迎。目前我使用的是SAXParser/XMLReader。但是没有人支持放松。我曾想过与Jing合并,但我希望有一个干净的结构来实现这一点 提前感谢。我使用带有嵌入式Schematron规则的RELAX NG

在Java应用程序中,我必须验证DocBook格式的不同版本的XML文档。DocBook 4基于DTD,DocBook 5基于RelaxNG/Schematron。什么是针对不同模式语言进行验证的合适方法?我找到了Oracle多模式XML验证器(MSV)、JARV和oNVDL。后者似乎不受欢迎。目前我使用的是SAXParser/XMLReader。但是没有人支持放松。我曾想过与Jing合并,但我希望有一个干净的结构来实现这一点


提前感谢。

我使用带有嵌入式Schematron规则的RELAX NG紧凑模式,但至少有几个流行的RELAX NG验证器(Jing、RNV)忽略了此Schematron代码。目前我们的工作流程是:

  • 使用Trang将压缩模式转换为XML语法
  • 使用Saxon和XSLT样式表“RNG2Schtrn.xsl”提取Schematron规则
  • 使用Jing根据提取的“.sch”Schematron模式进行验证
  • 使用Jing根据原始RELAX NG compact模式进行验证
  • 显然,Trang可以将XML1.0DTD转换为RELAXNG,因此您应该能够使用Jing进行所有三种类型的验证

    请参阅以获取转换脚本,并查看模式(顶部附近的Schematron规则)