dtd是啥玩意

1,971 阅读3分钟

前言

啊哈。我又来跟自己较劲儿了。今天我要打破的是一个比较魔性的想法。

我不想写文章

其实我内心还是想写的,因为这周我给自己订的flag是写5篇,当然今天已经第5天,说啥也不能成功率为0吧。那太不靠谱了。

dtd

直接说出本文要说的东西吧。html中的知识点。说明2点即可

  • dtd是什么
  • dtd有啥用处

dtd是什么

直接回答:是文档类型定义的意思,英文是 document type define。然后可以通过 DOCTYPE 去声明。

说实话,不太确定,还是老老实实的查证下。

  • 直接MDN上搜 DTD 没搜到
  • 上Google搜索DTD,提示:"我们的系统检测到您的计算机网络中存在异常流量"
  • 上Bing搜索DTD,点开 "DTD简介" 这篇文章(w3scholl)。

定义好像也没说啥,直接说了 dtd的用处,那好,直接说第2点。

dtd有啥用处

w3school中的解释

将w3school的用处摘录如下:

文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。

自己消化理解下:意思是主要为xml文档服务的。可以直接被DOCTYPE拿来内部定义,也可放在文件中,被DOCTYPE当做外部引用。

内部声明语法

<!DOCTYPE 根元素 [元素声明]>

内部声明实例

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

外部引用语法

<!DOCTYPE 根元素 SYSTEM "文件名">

外部引用实例

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

我的解释

开发HTML的时候经常可以看到 DOCTYPE声明.

HTML5

尽然没有DTD,这块儿待查明原因,有知道的大佬可以评论区留言,不甚感激。

<!DOCTYPE html>

HTML 4.01 Strict

该 DTD 包含所有HTML元素和属性,但不包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

该 DTD 包含所有HTML元素和属性,包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

该 DTD 等同于HTML 4.01 Transitional,但允许框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
"http://www.w3.org/TR/html4/frameset.dtd">

小结

本文总结了如下2点内容。但总感觉有点啥都没说,待持续精进一下。

1、我打破了我的一个借口。做了不想做的事情,尽管写的不扎地,但可以改进
2、说明了啥是 DTD,就是文档类型定义,给浏览器看的。
3、介绍了 DTD 有啥用处。分别在 HTML 5 和 HTML4 的表现如何

小尾巴

留个思考小尾巴,假如面试官问"说一说你对dtd的理解",你会怎么回答呢?

参考

DTD 简介
HTML 元素和有效的 DTD
HTML <!DOCTYPE> 标签