根据 RELAXNG 和 Schematron 验证 DocBook 5 文档?

根据 RELAXNG 和 Schematron 验证 DocBook 5 文档?

我正在编写 DocBook 5 文档,并希望根据 RELAXNG 和 Schematron 模式对其进行全面验证。

这是我尝试过的:

  • 据我所知,libxml2 包中的 xmllint 无法处理嵌入了 Schematron 的 RELAXNG 模式,并且独立的 schematron 模式(docbook.sch)无法根据 xmllint 成功编译。
  • MSV 似乎可以处理所有事情,但我没有使用relamesJAR(我使用的是 2013.6.1),所以我不确定它是否正在执行嵌入式 Schematron。
  • JNVDL 似乎也能起作用,尽管它给了我一个验证错误,告诉我我在文档中多次使用了一个 ID,而事实上我只使用了一次。

如何根据 RELAXNG 和 Schematron 模式全面验证我的 DocBook 5 文档?

答案1

有点尴尬,我没有早点注意到这一点,但我想出了一些办法。我还没有找到一种能够正确处理嵌入 Schematron 的单个 RELAXNG 模式的验证方法,但我已经找到了一种正确验证 DocBook 5 文档的方法。

事实证明,DocBook 5.0 不使用 Schematron 的 ISO 标准,而是使用 Schematron 1.5。因此,我尝试使用 ISO Schematron 资源提取和验证 Schematron 规则失败了。使用 XSL 脚本和方法http://www.topologi.com/resources/schtrn_xsd_paper.html#Processing(确保获取与 Schematron 1.5 兼容的过时文件 RNG2Schtrn.xsl 和 XSD2Schtrn.xsl)成功。

要点是:

  1. 使用 XSL 文件 ( RNG2Schtrn.xsl) 从 RELAXNG 架构中提取 Schematron 1.5 规则

  2. 使用 Schematron 1.5 验证 XSL 文件(schematron-basic.xsl位于http://xml.ascc.net/schematron/1.5/basic1-5/schematron-basic.html) 根据 Schematron 规则为 DocBook 文档创建验证 XSL 文件。

  3. 使用步骤 2 中创建的验证 XSL 处理 DocBook 文档并在输出中查找错误。

  4. 使用可以处理 RELAXNG 模式的工具来验证 DocBook 文档的其余部分。

相关内容