Apr 11

Markup language, a notation used to annotate a document’s content to give information regarding the structure of the text or instructions for how it is to be displayed.

标记语言,用于注释文档内容的一种符号,给出文本或指令的结构信息用于如何显示。

A markup language is a set of tags and/or a set of rules for creating tags that can be embedded in digital text to provide additional information about the text in order to facilitate automated processing of it, including editing and formatting for display or printing.

一种标记语言是一组标签的集合和一组规则的集合,创建标签并且嵌入到数字文本中,提供关于文本的额外信息便于自动解析处理,其中包括为了把文本显示或打印出来的编排和格式化处理。

一般Markup language特指用于计算机文档的标记语言。

简单说,就是给文档内容按规则加入一些额外的标记符号,它们是用来告诉媒介如何展现内容的,在最终的展现中是看不到这些符号的。

https://en.wikipedia.org/wiki/Markup
http://www.linfo.org/markup_language.html

SGML(Standard Generalized Markup Language)是GML(Generalized Markup Language)标准化后的名称。1986年成为ISO标准。

HTML(HyperText Markup Language),1993年发布首个正式Draft(IETF发布)。

XML(Extensible Markup Language),1996年发布首个正式Draft。

XHTML(Extensible Hypertext Markup Language)1998年发布首个正式Draft。因为HTML早在W3C组织创建前就存在了,W3C接手后,不怎么喜欢,于是搞了个XHTML。

HTML5 2008年发布首个正式Draft(WHATWG发布)。浏览器大厂为首的WHATWG组织弄了个HTML5,W3C只能妥协,HTML5成为W3C标准后,W3C还是搞了个XHTML5 (XML-serialized HTML5),对XML是真爱啊。

HTML是SGML的子集。
XML是SGML的子集。
HTML和XML是兄弟关系,它们都是SGML的子集。
XHTML是独立于HTML的新标记语言,脱胎于HTML。XHTML是把HTML按XML标准重写后的标记语言,它是XML的子集。
HTML5和SGML是并列的关系,都是一种独立的标记语言,HTML5脱胎于SGML。
HTML,XML,XHTML,HTML5都是用于互联网文档的标记语言。

A document type definition (DTD) is a set of markup declarations that define a document type for an SGML-family markup language (SGML, HTML, XML, XHTML).
DTD(document type definition)文档类型定义是一组标记符号声明的集合,用于定义SGML大家庭的标记语言(SGML, HTML, XML, XHTML)的文档类型。

因为HTML5不是SGML大家庭的标记语言,它是和SGML并存的独立的标记语言,所以它不需要DTD。

The doctype has a long and intricate history, but for now all you need to know is that this doctype tells the browser to interpret the HTML and CSS code according to W3C standards and not try to pretend that it is Internet Explorer from the 90s.
HTML文档第一行的doctype标记有着很长的和错综复杂的历史,但是现在你只需要知道这个doctype是告诉浏览器根据W3C标准去解释HTML和CSS代码,而不是去模拟90年代的IE。

现在浏览器的布局引擎layout engines使用三种模式:quirks mode, almost standards mode, 和full standards mode. 在quirks mode(怪异模式)中,layout仿照Navigator 4和IE 5老浏览器的不标准行为,为了那些在标准发布前建的网站这是必要的;在full standards mode(标准模式)中,layout行为被期望和HTML和CSS规范中描述的一样.在almost standards mode(接近标准模式)中,有极少数怪异行为。

浏览器通过HTML文档的DOCTYPE标记来触发哪种行为模式。触发浏览器采用最新HTML5规范。在HTML5规范中,DOCTYPE标记唯一的作用就是触发浏览器的full standards mode,但是其他HTML规范中这个标记还附加了引用DTD文件,确定文档类型的功能,但是对于浏览器来说,只是用来触发不同的layout mode,没有其他作用。

The HTML layout engines in modern web browsers perform DOCTYPE “sniffing” or “switching”, wherein the DOCTYPE in a document served as text/html determines a layout mode, such as “quirks mode” or “standards mode”. The text/html serialization of HTML5, which is not SGML-based, uses the DOCTYPE only for mode selection. Since web browsers are implemented with special-purpose HTML parsers, rather than general-purpose DTD-based parsers, they don’t use DTDs and will never access them even if a URL is provided. The DOCTYPE is retained in HTML5 as a “mostly useless, but required” header only to trigger “standards mode” in common browsers.

在现代浏览器中,HTML布局引擎执行DOCTYPE的嗅探”sniffing”或切换”switching”,text/html文档中的这个DOCTYPE决定一种布局模式,比如”quirks mode” or “standards mode”。
HTML5的text/html序列化不是基于SGML的,使用DOCTYPE标记仅仅是为了模式选择。自从浏览器采用专业型HTML解析器实现解析,而不是用基于DTD的通用型解析器解析,它们不使用DTDs,即使提供一个URL也绝不会访问它。这个DOCTYPE保留在HTML5的头部,就像是“多半没用,但是必需 mostly useless, but required”,它仅用于在浏览器中触发”standards mode” 。

A DOCTYPE is a required preamble.
一个DOCTYPE标记是首部必须有的。

DOCTYPEs are required for legacy reasons. When omitted, browsers tend to use a different rendering mode that is incompatible with some specifications. Including the DOCTYPE in a document ensures that the browser makes a best-effort attempt at following the relevant specifications.

DOCTYPEs因为遗留原因是必须的。曾经某个时候,浏览器往往使用不同的渲染模式,它们是不兼容的一些规范。在文档中包含DOCTYPE标记是让浏览器尽最大努力符合指定的规范。

这个DOCTYPE标记还可以让spec validators规范校验器确定使用哪个规范来对照着校验。

if a browser finds an outdated, incomplete of missing doctype at the start of the page, they use “quirks mode”, which is more backwards compatible with old practices and old browsers. Quirks mode assumes that the document is old or that it has not been created with web standards in mind — it means that the web page will still render, but the browser will work a bit harder in doing so, and you’ll likely get a strange or ugly result, which you weren’t quite expecting.

如果浏览器在页面开头找到是旧式写法或者不是符合规范写法的doctype标记,它将使用“quirks mode”,那是一种于老浏览器和老规则兼容的模式。 Quirks mode假定这个文档的老旧的或者不是按照web规范标准创建的,意思是这个页面仍将渲染,但是浏览器在这种情况下会有点难以处理,你会大概会获得一个诡异或者丑陋的结果,那肯定不是你想要的结果。

https://en.wikipedia.org/wiki/Document_type_declaration
https://developer.mozilla.org/en-US/docs/Quirks_Mode_and_Standards_Mode
https://www.w3.org/wiki/Doctypes_and_markup_styles
https://www.w3.org/TR/html5/syntax.html#the-doctype

written by panhezeng \\ tags: ,

©panhezeng for 阿潘道, 2006-2017. 原文地址:http://apsay.com/?p=1634
本文遵循署名-非商业性使用共享协议,转载请注明。

Leave a Reply