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文档中,我们引用了定义好的实体logo
和copyright
:
xmlCopy Code<!DOCTYPE example [
<!ENTITY logo "My Company Logo">
<!ENTITY copyright SYSTEM "copyright.txt">
]>
<example>
<header>
<img src="logo.jpg" alt="&logo;">
</header>
<content>
©right;
</content>
</example>
实体示例
内部实体示例
以下是一个内部实体的示例,它定义了一个HTML文档中常用的特殊字符
:
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 "&nbsp;">
</head>
<body>
<p>这是一个包含 的段落。</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
中定义的术语和定义。