使用XML Schema,DTD,RelaxNG和Schematron验证DocBook文档

时间:2013-06-19 09:28:18

标签: java xml validation relaxng

在我的Java应用程序中,我必须验证不同版本的DocBook格式的XML文档。 DocBook 4基于DTD,DocBook 5基于RelaxNG / Schematron。能够验证不同模式语言的适当方法是什么?我找到了Oracle Multi-Schema XML Validator(MSV),JARV和oNVDL。后者似乎已被弃用。目前我使用SAXParser / XMLReader。但是没有对RelaxNG的支持。我想和Jing结合,但我想找一个干净的结构去做。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

  1. 使用Trang
  2. 将紧凑架构转换为XML语法
  3. 使用Saxon和XSLT样式表“RNG2Schtrn.xsl”
  4. 提取Schematron规则
  5. 使用Jing验证提取的“.sch”Schematron架构
  6. 使用Jing验证原始的RELAX NG紧凑架构
  7. 显然Trang可以将XML 1.0 DTD转换为RELAX NG,因此您应该能够使用Jing进行所有三种类型的验证。

    请参阅https://github.com/citation-style-language/utilities/blob/master/style-qc.sh了解转换脚本,https://raw.github.com/citation-style-language/schema/master/csl.rnc查看我们的架构(Schematron规则靠近顶部)。