返回

HTML 核心系列 1:DTD 与实体

前端

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 文档非常重要。