D.8. 实体(快捷方式、文本宏和可重用文本)

可能有一些文本片段或标记,您希望一遍又一遍地使用。与其多次键入(并在您想要进行更改时不得不多次编辑),不如使用外部实体。实体可以为您提供快捷方式,以便:重用整个文档、文本片段和特殊标记。实体的一些常见用途包括:

示例 D-12. 添加实体

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ 
<-- I can add comments here --> 
<!ENTITY shortcut "Replace 'shortcut' with this text."> 

<!ENTITY sc-to-a-file SYSTEM "anotherfile.xml">
<-- note: the square bracket on the third line is closed on the next
line--> ]>
			

要使用这些实体,只需将您为实体指定的名称插入到 "&"(与号)和 ";"(分号)之间。例如:"&shortcut;" 将展开为 "用这段文本替换 'shortcut'""&sc-to-a-file;" 将包含以下内容中的所有内容anotherfile.xml.

在编写文本时,一个重要的功能是能够检查它是否会在最终草稿中呈现。通常,文本的几个部分会被标记为草稿,尤其是在更新已存在的文档时。

通过使用参数实体,您只需更改文档开头的行,即可包含或删除这些草稿。

示例 D-13. 参数实体的使用

<!ENTITY % review "INCLUDE"> ...
<![%review;[ <para>This paragraph will
be included on the draft when the entity "review" is defined with the
value "INCLUDE". </para> ]]>
	

实体review可能定义了多个文本,如示例 D-13所示。当对文本的更改被认为是最终版本时,您只需删除第 3 行和第 6 行之间的部分文本。

要保留草稿定义并在最终草稿中隐藏文本,只需将实体的规范从INCLUDE更改为IGNORE.