-
参数实体可定义一组通用的实体,在文档中可通过该参数实体来引用实体。参数实体的定义与通用实体定义类似,只是中间多了一个%,引用时也是用%代码&。
<!ENTITY % person "name,address,postcode">
引用方法
%person;
这样会用name,address,postcode代替参数实体%person;
-
通常DTD都比较大,DocBook的DTD长达11000多行,如果把它存放在单一文件中,管理和维护起来都非常困难。我们可以使用外部DTD子集,把一个大的DTD按功能分成不同的功能块,存放在不同的文件中。再通过外部参数实体声明引入当前DTD中,如:
定义参数实体引用外部names.dtd
<!ENTITY % names SYSTEM "names.dtd">
调用外部DTD子集
%names;
-
使用IGNORE关键字可注释声明,如:
<![IGNORE[
<!ELEMENT note (#PCDATA)>
]]>
当然了,使用<!-- 注释 -->的方式也是一样的。
-
INCLUDE关键字表示DTD中的确在使用给定的声明,如:
<![INCLUDE[
<!ELEMENT note (#PCDATA)>
]]>
单从该声明来看,有没有使用INCLUDE效果都一样,但如果组合INCLUDE和IGNORE,可实现DTD功能的选择。我们可定义一个参数实体:
<!ENTITY % note_allowed "INCLUDE" >
然后使用参数实体引用而不使用关键字:
<![%note_allowed;[
<!ELEMENT note (#PCDATA)>
]]>
按上述操作,元素声明是有效的,但我们也可以把参数实体%note_allowed重新定义为IGNORE,这样,该元素声明就无效了。