html5不基于sgml标记语言,是以什么为标准的?

html5不基于sgml标记语言,是以什么为标准的?

之前版本的html都是基于sgml,现在不需要引用dtd,那html5是以什么为标准的?我的意思是为什么之前的版本都是基于sgml的,而现在不用了?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

一、概念

1.  Doctype定义

  这个标签是一种通用标记语言的文档类型声明,它主要就是告诉标准通用标记语言解析器应该使用什么样的文档类型定义 Document Type Definition(DTD)来解析文档。

2. 什么是DTD?

XMl是一种元标记语言,是描叙语言的语言,定义标记的语法结构,从而生成新标记。而DTD则是为新标记建立文档并进行规范说明。

自描述数据的规范。通俗的来说,DTD就是一套关于标记符的语法规则,是html的验证机制。

3. DTD的作用

DTD定义了文档中的元素(标记和属性)和实体,以及相互关系。数据和结构分离。

通过DTD验证XML文档的有效性。DTD为解析器提供了解析XML文档的依据。所以每个XML文档必须指定对于哪个DTD有效。

4.DTD的分类

》Strict

如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用。

》Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时使用。

》Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD。

举个栗子

//用于XHTML 4.0 的严格型
<!DOCTYPE HTMLPUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

然后又在想了,html5的声明为什么没有

//html5<!DOCTYPE html>

因为,在HTML4.01中,<!DOCTYPE>声明引用DTD,因为HTML4.01基于标准通用标记语言(SGML)。DTD规定了标记语言的规则,这样浏览器才能正确地呈现内容。

然而现在的HTML5不基于SGML,所以不需要引用DTD,因此没有声明DTD。但是需要doctype来规范浏览器的行为(让浏览器按照他们应该的方式运行)

二、Doctype作用

Doctype的作用就是声明文档的解析类型(document.compatMode),也就是告知浏览器的解析器用什么文档标准解析这个文档。如果DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

三、页面的渲染模式

BackCompat:怪异模式(兼容模式),浏览器使用自己的怪异模式解析渲染页面。

CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。

所谓的怪异模式就是没有页面的DOCTYPE声明,标准模式具有DOCTYPE声明。

总结就是:由于历史遗留问题,没有必要过多纠结。我们的目标写出漂亮的,优雅的网页。

希望对你有帮助,祝学习愉快,欢迎采纳。



DIMwang 2017-02-27 17:06:27

谢谢  非常谢谢 获得知识

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师