DTD 实体学习笔记

DTD(Document Type Definition,文档类型定义)是一种用于定义XML文档结构的语言,它允许我们自定义元素和属性,并规定它们的结构和约束条件。

实体(Entity)是DTD中的一种重要元素,它允许我们将常用的文本、符号或代码片段定义为一个实体,并在需要使用时进行引用。这样可以方便地管理和维护大量重复出现的数据内容。

定义实体

在DTD中,我们可以使用<!ENTITY>声明定义一个实体。语法如下:

xmlCopy Code
<!ENTITY 实体名称 "实体内容">

其中,实体名称即为定义的实体名,实体内容则是实体代表的具体内容。

内部实体

如果实体内容是一个短字符串,可以直接将其放在双引号内,作为字符串常量。例如,下面定义了一个内部实体logo

xmlCopy Code
<!ENTITY logo "My Company Logo">

这样,在需要使用该实体时,只需在文档中引用它的名称即可:

xmlCopy Code
<img src="logo.jpg" alt="&logo;">

在以上示例中,&logo;被替换为My Company Logo

外部实体

如果实体内容比较长或需要频繁更新,可以将其定义在外部文件中,并在DTD中声明一个外部实体。例如,下面定义了一个外部实体copyright

xmlCopy Code
<!ENTITY copyright SYSTEM "copyright.txt">

其中,SYSTEM关键字指定实体的类型为外部实体。外部实体可以引用本地文件或远程文件。

在以上示例中,copyright.txt文件包含了该实体的具体内容。

引用实体

当一个实体被定义后,我们可以在XML文档中通过实体名称来引用它。在DTD中,我们通常使用&符号来引用实体,而实体名称则放在&;之间。

例如,在以下XML文档中,我们引用了定义好的实体logocopyright

xmlCopy Code
<!DOCTYPE example [ <!ENTITY logo "My Company Logo"> <!ENTITY copyright SYSTEM "copyright.txt"> ]> <example> <header> <img src="logo.jpg" alt="&logo;"> </header> <content> &copyright; </content> </example>

实体示例

内部实体示例

以下是一个内部实体的示例,它定义了一个HTML文档中常用的特殊字符&nbsp;

xmlCopy Code
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>HTML 实体示例</title> <!ENTITY nbsp "&amp;nbsp;"> </head> <body> <p>这是一个包含&nbsp;的段落。</p> </body> </html>

外部实体示例

以下是一个外部实体的示例,它定义了一组XML文档中经常使用的术语:

xmlCopy Code
<!DOCTYPE example [ <!ENTITY terms SYSTEM "terms.xml"> ]> <example> <header> <h1>XML 术语</h1> </header> <content> &terms; </content> </example>

其中,terms.xml文件包含了一组术语的定义:

xmlCopy Code
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE terms [ <!ELEMENT term (#PCDATA)> <!ENTITY xml "可扩展标记语言"> <!ENTITY dtd "文档类型定义"> <!ENTITY entity "实体"> ]> <terms> <term>&xml;</term> <definition>一种用于描述数据结构的标记语言。</definition> <term>&dtd;</term> <definition>一种用于定义XML文档结构的语言。</definition> <term>&entity;</term> <definition>DTD中的一种元素,允许我们将常用的文本、符号或代码片段定义为一个实体,并在需要使用时进行引用。</definition> </terms>

以上示例中,&terms;被替换为terms.xml中定义的术语和定义。