XHTML是更严格更纯净的HTML代码。
XHTML是什么
- XHTML指可拓展超文本标签语言;
- 目标是取代HTML;
- XHTML与HTML4.01几乎相同;
- 作为一种XML应用被重新定义的HTML;
- 是一个W3C标准。
为什么要使用XHTML
XML是一种标记化的语言,其中所有的东西都要被正确的标记,以产生形式良好的文档。
XML用来描述数据,HTML用来显示数据。
通过把HTML和XML各自的长处加以结合,我们得到了现在和未来都能派上用场的标记语言——XHTML。
XHTML可以被所有的支持XML的设备读取,同时在其余的浏览器升级至支持XML之前,XHTML使我们有能力编写出拥有良好结构的文档,这些文档可以很好地工作于所有的浏览器,并且可以向后兼容。
XHTML与HTML的差异
- XHTML中,元素必须被正确地嵌套;
- XHTML元素必须被关闭(非空标签必须使用结束标签);
- 空标签也必须被关闭(使用结束标签或其开始标签使用/>结尾);
- XHTML元素必须小写(标签名和属性对大小写敏感);
- XHTML文档必须有一个根元素。
XHTML语法
- 属性名称必须小写;
- 属性值必须加引号;
- 属性不能简写;
- 用id属性代替name属性;
- XHTML DTD定义了强制使用的HTML元素。(必须进行文件类声明)
如何将网站升级至XHTML
- 添加文件声明(不同的文件声明,浏览器对文档的处理方式不同)
- 小写的标签和属性名
- 给所有属性加上引号
- 验证站点
XHTML验证
通过DTD验证XHTML
XHTML文档是根据文档类型声明(DTD)进行验证的。只有将正确的DTD添加到文件的首行,XHTML文件才会被正确地验证。
XHTML模块
XHTML模块化模型定义了XHTML的模块。
XHTML模块化的原因
通过将XHTML分为若干模块,W3C已经创造出数套小巧且定义良好的XHTML元素,这些元素既可被独立应用于简易设备,又可以与其他XML标准并入大型且更复杂的应用程序。
XHTML模块
| 模块名称 | 描述 |
|---|---|
| Applet Module (Applet模块) | 定义已被废弃的applet元素。 |
| Base Module (基础模块) | 定义基本元素。 |
| Basic Forms Module (基础表单模块) | 定义基本的表单元素 (forms)。 |
| Basic Tables Module (基础表格模块) | 定义基本的表格元素 (table)。 |
| Bi-directional Text Module (双向文本模块) | 定义bdo元素。 |
| Client Image Map Module(客户端图像映射模块) | 定义浏览器端图像映射元素(image map elements)。 |
| Edit Module (编辑模块) | 定义编辑元素删除和插入。 |
| Forms Module (表单模块) | 定义所有在表单中使用的元素。 |
| Frames Module (框架模块) | 定义frameset元素。 |
| Hypertext Module (超文本模块) | 定义a元素。 |
| Iframe Module (内联框架模块) | 定义iframe元素。 |
| Image Module (图像模块) | 定义图像元素 (img)。 |
| Intrinsic Events Module () | 定义事件属性 (event),比如onblur和onchange。 |
| Legacy Module (遗留模块) | 定义被废弃的元素和属性。 |
| Link Module (链接模块) | 定义链接 (link)元素。 |
| List Module (列表模块) | 定义列表元素ol, li, ul, dd, dt,和dl。 |
| Metainformation Module (元信息模块) | 定义meta元素。 |
| Name Identification Module (名称识别模块) | 定义已被废弃的name属性。 |
| Object Module (对象模块) | 定义对象元素 (object)和param元素。 |
| Presentation Module (表现模块) | 定义表现元素比如b和i。 |
| Scripting Module (脚本模块) | 定义脚本 (script)和无脚本 (noscript)元素。 |
| Server Image Map Module(服务器端图像映射模块) | 定义服务器端图像映射(server side image map)元素 |
| Structure Module (结构模块) | 定义以下元素:html, head, title and body。 |
| Style Attribute Module (样式属性模块) | 定义样式属性。 |
| Style Sheet Module (样式表模块) | 定义样式元素。 |
| Tables Module (表格模块) | 定义用于表格中的元素。 |
| Target Module (Target模块) | 定义target属性。 |
| Text Module (文本模块) | 定义文本容器元素 (text container),比如p和h1。 |
XHTML标准属性
这里列出通用于每个标签的核心属性和语言属性(有个别例外)。
核心属性
以下标签不提供下面的属性:base, head, html, meta, param, script, style, 以及 title 元素。
| 属性 | 值 | 描述 |
|---|---|---|
| class | class_rule 或 style_rule | 元素的类(class) |
| id | id_name | 元素的某个特定id |
| style | 样式定义 | 内联样式定义 |
| title | 提示文本 | 显示于提示工具中的文本 |
语言属性
以下标签不提供下面的属性:base, br, frame, frameset, hr, iframe, param, 以及 script 元素。
| 属性 | 值 | 描述 |
|---|---|---|
| dir | ltr | rtl | 设置文本的方向 |
| lang | 语言代码 | 设置语言代码 |
键盘属性
| 属性 | 值 | 描述 |
|---|---|---|
| accesskey | 字符 | 设置访问某元素的键盘快捷键 |
| tabindex | 数 | 设置某元素的Tab次序 |
XHTML事件属性
HTML4.0的新特性之一是使HTML事件触发浏览器中的行为。这里了解一下可被插入HTML标签以定义事件行为的一系列属性。
想要使用这些事件进行编程,先要学习JavaScript。
窗口事件
仅在 body 和 frameset 元素中有效。
| 属性 | 值 | 描述 |
|---|---|---|
| onload | 脚本 | 当文档被载入时执行脚本 |
| onunload | 脚本 | 当文档被卸下时执行脚本 |
表单元素
仅在表单元素中有效。
| 属性 | 值 | 描述 |
|---|---|---|
| onchange | 脚本 | 当元素改变时执行脚本 |
| onsubmit | 脚本 | 当表单被提交时执行脚本 |
| onreset | 脚本 | 当表单被重置时执行脚本 |
| onselect | 脚本 | 当元素被选取时执行脚本 |
| onblur | 脚本 | 当元素失去焦点时执行脚本 |
| onfocus | 脚本 | 当元素获得焦点时执行脚本 |
键盘事件
在下列元素中无效:base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, 以及 title 元素。
| 属性 | 值 | 描述 |
|---|---|---|
| onkeydown | 脚本 | 当键盘被按下时执行脚本 |
| onkeypress | 脚本 | 当键盘被按下后又松开时执行脚本 |
| onkeyup | 脚本 | 当键盘被松开时执行脚本 |
鼠标事件
在下列元素中无效:base, bdo, br, frame, frameset, head, html, iframe, meta, param, script, style, title 元素。
| 属性 | 值 | 描述 |
|---|---|---|
| onclick | 脚本 | 当鼠标被单击时执行脚本 |
| ondblclick | 脚本 | 当鼠标被双击时执行脚本 |
| onmousedown | 脚本 | 当鼠标按钮被按下时执行脚本 |
| onmousemove | 脚本 | 当鼠标指针移动时执行脚本 |
| onmouseout | 脚本 | 当鼠标指针移出某元素时执行脚本 |
| onmouseover | 脚本 | 当鼠标指针悬停于某元素之上时执行脚本 |
| onmouseup | 脚本 | 当鼠标按钮被松开时执行脚本 |