HTMLCSS学习笔记

文档媒体类型

HTML5 定义的 HTML 语法大部分都兼容于 HTML4 和 XHTML1,但是也有一部分不兼容。大多数的 HTML 文档都是保存成 text/html 媒体类型。

HTML5 为 HTML 语法定义了详细的解析规则(包括错误处理),用户必须遵守这些规则将它保存成 text/html 媒体类型。如下是一个符合 HTML 语法规范的例子:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

HTML5 为 HTML 语法也定义了一个 text/html-sandboxed 媒体类型,以便可以 host 不信任的内容。

其它能够用在 HTML5 的语法是 XML,它兼容于 XHTML1。用 XML 语法的话需要将文档保存成 XML 媒体类型,并且根据 XML 的规范需要设置命名空间(namespace)为 http://www.w3.org/1999/xhtml

下面的例子文档符合 HTML5 里的 XML 语法规范,需要注意的是 XML 文档必须保存成 XML 媒体类型的,例如 application/xhtml+xml 或者 application/xml。

 <?xml version="1.0" encoding="UTF-8"?>
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>Example document </title>
   </head>
   <body>
     <p>Example paragraph </p>
 </body>
</html>

Character Encoding

HTML5 的 HTML 语法里,有三种形式可以声明字符串的 encoding 类型:

1.在传输级别上,在 HTTP 实例的 header 里设置 Content-Type。

2.在文件的开头设置一个 Unicode 的 Byte Order Mark(BOM),该字符为文件的 encoding 方式提供了一个签名。

3.在文档的前 1024 个 byte 之前的内容里,使用带有 charset 属性的 meta 元素来声明 encoding 方式。
例如:<meta charset='UTF-8'> 表明该文档是 UTF-8 格式的。它是替换原有的 <meta http-equiv='Content-Type'; content='text/html; charset=UTF-8'> 语法声明,尽管原有的语法依然可用,但在 HTML5 里不推荐使用。

对于 HTML5 里的 XML 语法,依然和以前的 XML 语法声明式一样的。

DOCTYPE

HTML5 的 HTML 语法要求文档必须声明 DOCTYPE 以确保浏览器可以在标准模式下展示页面。这个 DOCTYPE 没有其它的目的,并且在 XML 里是可选项,因为 XML 媒体格式的文档一直就是在标准模式下处理的。

DOCTYPE 的声明方式是 <!DOCTYPE html>,不区分大小写。HTML 的早期版本声明的 DOCTYPE 需要很长是因为 HTML 语言是建立在 SGML 的基础上,所以需要关联引用一个相对应的 DTD。HTML5 和之前的版本不一样了,仅仅需要声明 DOCTYPE 就可以告诉文档启用的是 HTML5 语法标准了,浏览器会为 <!DOCTYPE html> 做剩余的工作的。

MathML 和 SVG

HTML5语法允许在文档里使用 MathML(数学标记语言)和 SVG(可伸缩矢量图)元素。

例如: 一个 svg 元素画出的圆

 A green circle:
 <svg> <circle r='50' cx='50' cy='50' fill='green'> </svg>

更多复杂的组合标记也是支持的,比如使用 svg 的 foreignObject 元素你可以嵌套 MathML, HTML,或者自身嵌套。

其它

HTML5 已经支持 IRI 了,尽管这些 IRI 只能在 UTF-8 和 UTF-16 的文档里使用。

lang 属性如果设置的不合法,将会更新为空字符串,以告诉浏览器是一个未知的语言,作用和 XML 里的 xml:lang 一样。