2013-06-19 39 views
1

我必須驗證不同版本的DocBook格式的XML文檔。 DocBook 4基於DTD,DocBook 5基於RelaxNG/Schematron。 beeing能夠針對不同的模式語言進行驗證的適當方式是什麼?我找到了Oracle多模式XML驗證器(MSV),JARV和oNVDL。後者似乎被棄用。目前我使用SAXParser/XMLReader。但是沒有對RelaxNG的支持。我想過與Jing結合,但我尋找一個乾淨的結構去做。在我的Java應用程序中使用XML Schema,DTD,RelaxNG和Schematron驗證DocBook文檔

預先感謝您。

回答

2

我使用嵌入Schematron規則的RELAX NG緊湊架構工作,但至少有幾個受歡迎的RELAX NG驗證器(Jing,RNV)忽略此Schematron代碼。目前,我們的工作流程是:

  1. 轉換的緊湊型模式,以XML語法與莊
  2. 提取與撒克遜和XSLT樣式表「RNG2Schtrn.xsl」
  3. 使用靖的Schematron規則來驗證對提取「 .SCH」 Schematron模式
  4. 使用京驗證對原RELAX NG緊湊模式

顯然莊可以轉換成XML 1.0的DTD RELAX NG,所以你應該能夠使用敬˚F或所有三種類型的驗證。

有關我們的轉換腳本,請參見https://github.com/citation-style-language/utilities/blob/master/style-qc.sh,請參閱https://raw.github.com/citation-style-language/schema/master/csl.rnc以查看我們的模式(Schematron規則靠近頂部)。