DTD - 实体


DTD中的实体(Entity)是DTD中一个非常重要的概念,可以用来定义常用的字符和字符串片段。实体可以使用实体引用(Entity Reference)来引用,使用实体可以使XML文档更简洁并且易于维护。

DTD中的实体分为两种:外部实体(External Entity)和内部实体(Internal Entity)。

外部实体是一个引用外部文件的实体,它可以被包含在当前DTD文件中,也可以被另一个外部DTD文件包含,并且它只能引用外部文档。外部实体引用的语法格式如下:

<!ENTITY 实体名称 SYSTEM "外部文件的URL">

其中,实体名称指的是定义实体的名称,SYSTEM关键字指的是引用的是外部文件,后面的URL指的是外部文件的地址。

举个例子,假设有一个外部的文件test.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<country>
  <name>China</name>
  <capital>Beijing</capital>
</country>

现在我们要在当前的DTD中引用这个文件,可以使用以下的实体定义:

<!ENTITY country SYSTEM "test.xml">

这个定义中,实体名称为country,指向的外部文件为test.xml。这样我们就可以在XML文档中使用&country;来代替test.xml中的内容。

对于同样的文件,如果我们使用意外的标签语言,比如HTML,也可以使用这个方式引用:

<!ENTITY country SYSTEM "test.xml">

然后在HTML文件中就可以使用&country;来引用这个外部文件了。

内部实体是DTD文件中的一个变量,可以在DTD中引用,也可以在XML文档中使用实体引用来使用。内部实体引用的语法格式如下:

<!ENTITY 实体名称 "实体值">

其中,实体名称指的是定义实体的名称,而实体值则指的是该实体所表示的值。

举个例子,如果我们需要在XML文档中使用&hello;来替代字符串"Hello World!",可以在DTD中定义一个内部实体:

<!ENTITY hello "Hello World!">

这样,我们在XML文档中可以使用&hello;来代替"Hello World!“了。

需要注意的是,DTD中还有一个重要的实体——< 和 >,分别表示小于号和大于号,因为这两个符号具有特殊意义,所以在XML中直接使用它们作为文本可能会产生歧义。因此,DTD中定义了这两个实体以便在XML文档中使用。

以上就是DTD中实体的用法和语法,使用实体可以使XML文档更加简洁,方便维护。对于一个比较大的XML文档,使用实体可以更便于修改和维护。同时,由于DTD中定义了一个可扩展性的实体系统,可以通过将DTD文档中的实体动态调整来实现文本内容和文本结构的演化,保证了XML技术的一种跨平台和长远性。