HTML 核心系列 1:DTD 与实体
2024-02-19 16:00:10
HTML 核心系列 1:DTD 与实体
HTML、SGML 和 XML 都属于标记语言。标记语言是一种使用标签来标记文本内容的计算机语言,以便计算机或浏览器能够轻松解析和显示内容。
DTD(Document Type Definition,文档类型定义)是一种用于定义 SGML 文档结构的语法规范。它指定了 SGML 文档中允许的元素、属性及其语法规则。DTD 可以是内部的,也可以是外部的。内部 DTD 直接包含在 SGML 文档中,而外部 DTD 则作为一个单独的文件存在。
实体(Entity)是 SGML 文档中用于替换文本内容的特殊符号。实体可以是字符实体或通用实体。字符实体用于替换单个字符,而通用实体用于替换一段文本。实体可以是预定义的,也可以是用户自定义的。
在 HTML 中,DTD 和实体也发挥着重要作用。HTML 5 规范中定义了一个默认的 DTD,用于验证 HTML 文档的语法。HTML 5 中还定义了一些预定义的实体,例如 &、<、> 等,用于替换相应的字符。
要编写一个有效的 HTML 文档,必须遵守 HTML 5 规范中定义的语法规则。这意味着必须使用正确的标签和属性,并遵循 DTD 的规定。如果 HTML 文档不符合 DTD 的规则,则可能无法正确显示或被浏览器解析。
DTD 的基本语法
DTD 的基本语法如下:
<!DOCTYPE html [
<!ENTITY % paramname "value">
<!ENTITY % paramname "%paramname;">
<!ATTLIST elementname attribute_name attribute_type #default_value>
<!ELEMENT elementname content_model>
]>
<!DOCTYPE html>
:声明文档类型。<!ENTITY % paramname "value">
:定义一个实体。<!ENTITY % paramname "%paramname;">
:定义一个实体并指定其值。<!ATTLIST elementname attribute_name attribute_type #default_value>
:定义一个元素的属性。<!ELEMENT elementname content_model>
:定义一个元素的内容模型。
实体的基本语法
实体的基本语法如下:
&entity_name;
&
:实体开始符。entity_name
:实体名称。;
:实体结束符。
示例
下面是一个简单的 HTML 文档,其中使用了 DTD 和实体:
<!DOCTYPE html [
<!ENTITY % logo "logo.png">
<!ENTITY % title "My Website">
<!ATTLIST html title CDATA #REQUIRED>
<!ELEMENT html (head, body)>
<!ELEMENT head (title)>
<!ELEMENT body (p)>
<!ELEMENT p (#PCDATA)>
]>
<html title="&title;">
<head>
</head>
<body>
<p>This is my website.</p>
</body>
</html>
这个 HTML 文档使用了一个外部 DTD 文件来定义文档的结构。DTD 文件中定义了一个名为 logo 的实体,用于替换 logo.png 文件的路径。还定义了一个名为 title 的实体,用于替换网站的标题。HTML 文档中使用了这些实体来指定网站的标题和徽标。
DTD 和实体是 HTML 中非常重要的概念。理解 DTD 和实体对于编写有效的 HTML 文档非常重要。