关于:HTML <!DOCTYPE> 标签

本文详细解释了HTML和XHTML文档中的DOCTYPE声明的作用及不同类型的DTD,包括Strict、Transitional和Frameset,以及它们如何影响文档的表现。
最近修改同事做的页面时出现错误,我自己做的时候正常,但是将修改的部分代码复制到他的页面中时出现错误,主要样式改变较大。对比发现是HTML <!DOCTYPE> 标签 不同。就查了一下W3C的关于<!DOCTYPE> 标签的详细说明。一下是W3C的详细说明。以此让自己注意也让大家关注一下。

<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。
该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
以下面这个 <!DOCTYPE> 标签为例:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。
提示和注释:
注释:<!DOCTYPE> 标签没有结束标签!
HTML
HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。
HTML Strict DTD
如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">

HTML Transitional DTD
Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时,请使用此类型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
Frameset DTD
Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "
http://www.w3.org/TR/html4/frameset.dtd">

XHTML
XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。
XHTML Strict DTD
如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML Transitional DTD
Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 XHTML 的呈现特性时,请使用此类型:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML Frameset DTD
当您希望使用框架时,请使用此 DTD!
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

如需检查你是否编写了带有正确 DTD 的合法 XHTML 文档,您可以把您的 XHTML 页面链接到一个 XHTML 验证器。
### &amp; 和 &amp; 在编程或标记语言中的区别 在编程和标记语言中,`&amp;` 和 `&amp;` 的使用场景和含义有所不同。以下是两者的具体差异: #### 1. **`&amp;` 的含义** 在许多编程语言中,`&amp;` 是一个操作符,通常用于位运算(bitwise operations)或逻辑运算(logical operations)。例如,在 C、C++、Java 等语言中,`&amp;` 表示按位与操作[^5]。此外,在某些语言中,`&amp;` 还可以用于引用变量或地址操作。 在标记语言如 HTML 或 XML 中,直接使用 `&amp;` 可能会导致解析错误,因为 `&amp;` 被用作实体引用的开头字符。例如,`&lt;` 表示小于号 `&lt;`,`&gt;` 表示大于号 `&gt;`。因此,如果需要在 HTML 或 XML 文档中显示实际的 `&amp;` 字符,必须使用其转义形式 `&amp;`[^6]。 #### 2. **`&amp;` 的含义** `&amp;` 是 `&amp;` 的转义形式,主要用于标记语言(如 HTML 和 XML)中,以避免语法冲突。当需要在文档中显示字面意义上的 `&amp;` 时,必须使用 `&amp;`。例如,以下代码片段展示了如何正确使用 `&amp;`: ```html &lt;a href="http://example.com/page?name=John&amp;age=30"&gt;Link&lt;/a&gt; ``` 如果不使用 `&amp;`,浏览器可能会误解为另一个实体引用的开始,从而导致错误解析。 #### 3. **总结** - 在编程语言中,`&amp;` 通常是一个操作符。 - 在标记语言中,`&amp;` 是实体引用的起始符号,而 `&amp;` 是其转义形式,用于表示字面意义上的 `&amp;`[^7]。 ### 示例代码 以下是一个简单的 HTML 示例,展示 `&amp;` 和 `&amp;` 的不同用法: ```html &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Example&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- 使用 &amp; 来表示字面意义上的 &amp; --&gt; &lt;p&gt;Incorrect: http://example.com/test?a=1&amp;b=2&lt;/p&gt; &lt;p&gt;Correct: http://example.com/test?a=1&amp;b=2&lt;/p&gt; &lt;/body&gt; &lt;/html&gt; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虎眼豆丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值