如何在DocBook 5.0中正确包含常量字符串?

时间:2018-02-06 12:03:26

标签: macros constants docbook docbook-5

我正在开发的软件有使用DTD在DocBook 4.2中编写的文档,我想迁移到5.0并删除DTD。大多数内容都是迁移的,但最后剩下的就是版本宏。我曾经有一个名为version.ent的文件(由Makefile生成):

<!ENTITY __VERSION__ "1.2.3-git">

然后,在我希望包含软件版本的每个文件中引用此文件一次:

<!ENTITY % version SYSTEM "version.ent">
%version;
]>

有了这些,就可以做到这样的事情:

Welcome to the User's guide of foo version &__VERSION__.

如何在不使用DTD的情况下在DocBook 5.0中实现这种机制?

1 个答案:

答案 0 :(得分:1)

经过一番挖掘,我发现解决方案是内部DTD子集。我错误地认为DTD不应该被完全使用,但它是不正确的。

此页面解释得很好:http://www.sagehill.net/docbookxsl/Db5Entities.html。相关引言:

  

当你从DTD切换到RelaxNG(或W3C XML Schema,为此   但是,你失去了在模式中定义XML实体的能力。

此外:

  

您仍然可以在DocBook 5中使用实体,但无法声明它们   在RelaxNG架构中。相反,您必须引用您的实体   需要的每个文档的DOCTYPE声明中的声明   它们。