简明 XHTML 1.0 参考手册

作者:金步国


版权声明

本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。

其他作品

本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表:

BUG报告,切磋与探讨

由于作者水平有限,因此不能保证作品内容准确无误,请在阅读中自行鉴别。如果你发现了作品中的错误,请您来信指出,哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳。如果你愿意就作品中的相关内容与我进行进一步切磋与探讨,也欢迎你与我联系。联系方式:MSN: csfrank122@hotmail.com


严格型XHTML文档头与文档结构

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="zh-CN" />
<style type="text/css" media="all">
</style>
<!-- 其他文档头元素 -->
<title>文档标题</title>
</head>
<body>
</body>
</html>

通用字符实体

实体含义
&quot;"
&amp;&
&lt;<
&gt;>

属性值的数据类型

[注意]所有属性值编码后的长度都不能超过1024字节。

[释疑] 一段被 <![CDATA[]]>括起来的CDATA节表示一段不被解析的字符数据,其中可以直接使用 " & < > 字符。
CDATA节只能出现在元素的内容中,它与属性声明中的CDATA数据类型并无任何关系。

属性值的基本类型
数据类型解释
ID整个文档范围内的唯一标识符
IDREF在文档其他位置已定义的ID类型的值
IDREFS空格分割的已定义的ID类型的值列表
NMTOKEN面向处理程序的XML名称(记号)
CDATA字符数据,必须对 & < 和 " 使用实体,多个空白符等价于单个空格。
NMTOKEN的派生类型
数据类型解释
语言代码比如:"zh" "zh-CN" "zh-TW" "en-US"
框架名预定义名称:"_blank"(新窗口) "_self"(自身) "_parent"(父窗口) "_top"(顶层窗口) ;自定义的名称不能以下划线开头。
CDATA的派生类型
数据类型解释
MIME类型比如:"text/css" "image/gif" "application/rss+xml"
MIME列表逗号分隔的MIME类型列表。比如:"text/*" "image/*,*/*"
设备列表逗号分隔的设备类型列表。比如:"all"(所有) "screen"(屏幕) "print"(打印机)
字符编码比如:"gb2312" "utf-8"
关系列表空格分隔的连接关系列表。比如:"Shortcut Icon"(图标,仅用于link) "Next"(下一个) "Prev"(上一个) "Parent"(上一级) "Start"(起点) "Contents Index"(目录 索引) "Alternate"(可替代文档) "Chapter"(章) "Section"(节) "Subsection"(子节) "Copyright"(版权) "Glossary"(词汇表) "Help"(帮助) "Appendix"(附录)
URL比如:"/new%20pricing.php?id=678" "mailto:rcpt@host?subject=sub&cc=copy@net" "javascript:fun('cc');"
URL列表空格分割的URL列表。比如:"../index.html /test.html#frag #price"
js脚本一段JavaScript脚本。比如:"window.alert("XX公司主页");"
简介对元素内容的摘要介绍。比如:"XX公司简介"
唯一字母整个文档范围内的唯一小写字母。比如:"a"
正整数一个大于零的正整数。比如:"1"
像素以像素为单位的长度。比如:"2" "523" "0"
长度"nn"表示像素长度,"nn%"表示百分比长度(相对于包含块的高度或宽度)。比如:"3" "30%"
混合长度"nn"表示像素长度,"nn%"表示百分比长度,"n*"表示剩余空间内的相对长度。比如:"3*" "*" "5*"
坐标序列逗号分隔的坐标序列。规则:矩形[x1,y1,x2,y2],圆[x,y,r],多边形[x1,y1,x2,y3,x3,y3,...,xn,yn]

通用属性组

方框含义
模式解释
[]无默认值的可选属性
["???"]有默认值的可选属性
[*]无默认值的必需属性
[定值"???"]值固定的必需属性
%Core;(核心)
属性名数据类型解释
idID[]为元素定义一个唯一引用名,以供 超连接、样式表、小程序、其他元素 等引用。
classCDATA[]指定元素内容的样式类。其值为用空格分隔的样式类名称列表。
title简介[]为元素指定一个标题。鼠标停留时会显示其内容,常作为热点帮助。
%Lang;(语言)
属性名数据类型解释
xml:lang语言代码[]指定元素内容的语言。
%Event;(事件)
属性名数据类型解释
onclickjs脚本[]单击事件
ondblclickjs脚本[]双击事件
onmousedownjs脚本[]按下左键事件
onmouseupjs脚本[]释放左键事件
onmouseoverjs脚本[]进入元素区域事件
onmousemovejs脚本[]在元素内移动事件
onmouseoutjs脚本[]离开元素区域事件
%Focus;(焦点)
属性名数据类型解释
accesskey唯一字母[]定义选中该元素的快捷键(Alt+字母)
tabindex正整数[]使用Tab键切换焦点时的顺序
onfocusjs脚本[]获得焦点事件
onblurjs脚本[]失去焦点事件

%Attrs; = %Core; + %Lang; + %Event;


通用元素组

%inline;
"a | br|span|object|img|map|iframe | em|strong|dfn|samp|kbd|code|var|cite|q|abbr|acronym | input|select|textarea|label|button"
%INLINE;
(#PCDATA | %inline; | script)*
%block;
"div | p | h1|h2|h3|h4|h5|h6 | ul|ol|dl | pre|blockquote|address | fieldset | table"
%BLOCK;
(%block; | form | script)*
%Flow;
(%INLINE; | %BLOCK;)

[说明]"#PCDATA" 表示文本数据,必须对其中的 & 和 < 字符使用实体。


文档结构与头部元素

界定文档%Lang;<html> head, body </html>
xmlnsURL[定值"http://www.w3.org/1999/xhtml"]本篇文档的XML命名空间
文档头%Lang;<head> (meta|link|style|script|object)*, base?, title </head>
文档标题%Lang;<title> #PCDATA </title>
文档基准 <base ... />
hrefURL[]基准URL。比如:"/info/"
target框架名["_self"]默认的目标框架或窗口名称
元信息%Lang;<meta ... />
http-equivCDATA[]等价HTTP头字段名称
nameCDATA[]元信息的名称
contentCDATA[*]名称对应的值
补充说明http-equiv与name必需二选一。
http-equiv常用:"Content-Type"(MIME类型,字符编码) "Content-Language"(语言) "Refresh"(自动刷新) "Expires"(失效时间) "Cache-Control"(缓存控制) "MSThemeCompatible"(XP主题) "imagetoolbar"(图像工具栏) "Page-Enter"(载入特效) "Page-Exit"(退出特效)
name常用:"keywords"(关键字列表) "description"(网页描述) "author"(作者) "Copyright"(版权信息) "revisit"(重访) "robots"(机器人指令) "abstract"(摘要) "classification"(分类) "page-topic"(网页主题) "placename"(地名)
文档关系%Attrs;<link ... />
hrefURL[*]目标文档
rel关系列表[*]从源文档到目标文档的关系
rev关系列表[]从目标文档到源文档的关系
hreflang语言代码[]目标文档的语言
charset字符编码[]目标文档的字符编码
typeMIME类型[]目标文档的MIME类型
media设备列表[]目标文档所属设备类型
补充说明rel与rev属性的通常用法:
a)在文档集中导航(start, contents, prev, next, index, end, help)
c)连接到该文档的可替代版本(rel="alternate"),如:另一语言版本、RSS版本、PDF版本、打印版本
样式表%Lang;<style> #PCDATA </style>
typeMIME类型[定值"text/css"]
media设备列表["screen"]适用的媒体类型
title简介[]样式说明
JS脚本 <script> #PCDATA </script>
typeMIME类型[定值"text/javascript"]
srcURL[]引用的外部javascript代码(*.js)位置
charset字符编码[]与src属性一起使用,指明外部js文件的字符集
defer(defer)[]指明js脚本并不修改XHTML代码,从而可推迟脚本的执行
文档体%Attrs;<body> %BLOCK; </body>
onloadjs脚本[]文档被完全载入完毕时的事件
onunloadjs脚本[]文档被卸载前的事件

结构元素

标题%Attrs;<h1|h2|h3|h4|h5|h6> %INLINE; </h1|h2|h3|h4|h5|h6>
水平分割线%Attrs;<hr ... />
noshade(noshade)[]不显示阴影
通用结构容器%Attrs;<div> %Flow; </div>
段落%Attrs;<p> %INLINE; </p>

%Attrs; %Focus;<a> (%INLINE; - a) </a>
nameNMTOKEN[]锚的名称
charset字符编码[]所引用资源的字符编码
typeMIME类型[]所引用资源的MIME类型
hrefURL[]所引用资源的URL
hreflang语言代码[]所引用资源的语言
rel关系列表[]从源文档到目标文档的关系
rev关系列表[]从目标文档到源文档的关系
target框架名[base.target]目标框架或窗口名称
补充说明一般放在多个元素的最内层

列表元素

有序|无序列表%Attrs;<ol|ul> (li)+ </ol|ul>
compact(compact)[]紧凑显示
列表项%Attrs;<li> %Flow; </li>
定义列表%Attrs;<dl> (dt,dd*)+ </dl>
compact(compact)[]紧凑显示
术语%Attrs;<dt> %INLINE; </dt>
解释%Attrs;<dd> %Flow; </dd>

文本元素

内联样式容器%Attrs;<span> %INLINE; </span>
地址%Attrs;<address> %INLINE; </address>
预格式化文本%Attrs;<pre> (%INLINE; - "img|object") </pre>
大块引用%Attrs;<blockquote> %BLOCK; </blockquote>
citeURL[]引用内容的来源
长|短内联引用%Attrs;<cite|q> %INLINE; </cite|q>
换行%Core;<br ... />
一般|重点强调%Attrs;<em|strong> %INLINE; </em|strong>
首用术语%Attrs;<dfn> %INLINE; </dfn>
普通|首字母缩写%Attrs;<abbr|acronym> %INLINE; </abbr|acronym>
样例%Attrs;<samp> %INLINE; </samp>
键盘输入%Attrs;<kbd> %INLINE; </kbd>
代码|变量%Attrs;<code|var> %INLINE; </code|var>

替换元素

图像%Attrs;<img ... />
srcURL[*]图像文件的位置
alt简介[*]图像替代文本,鼠标停留时会显示其内容
longdescURL[]对图像进行详细描述的页面
height长度[]高度
width长度[]宽度
usemapURL[]客户端图像映射,其值为期望的<map>元素的name属性值。
ismap(ismap)[]服务端图像映射(位于<a>中),将单击处x,y坐标发给<a>的href属性指定的处理程序。
客户端图像映射%Attrs;<map> area+ </map>
idID[*]此处id为必需属性
nameNMTOKEN[*]用来被usemap属性引用的唯一标识符
图像映射区域%Attrs; %Focus;<area ... />
shape(rect|circle|poly)["rect"]区域形状(矩形|圆|多边形)
coords坐标序列[]矩形:"x1,y1,x2,y2" 圆:"x,y,R" 多边形:"x1,y1,x2,y2,x3,y3,..."
hrefURL[]该区域对应的URL
nohref(nohref)[]表明没有文档与这个区域有关,单击此区域没有任何效果。
alt简介[*]对该区域的简短描述,鼠标停留时会显示其内容
target框架名[base.target]目标框架或窗口名称
内联框架%Core;<iframe> %Flow; </iframe>
nameNMTOKEN[]框架的名称,将成为target属性的目标
srcURL[]显示在该框架中的初始文档
frameborder(1|0)["1"]边框:显示|不显示
scrolling(auto|yes|no)["auto"]滚动条:自动|始终显示|禁止显示
嵌入对象%Attrs;<object> param*, %Flow; </object>
declare(declare)[]仅声明该对象而不将其实例化
classidURL[]对象的URL
codebaseURL[]对象源代码的URL
dataURL[]需要被对象处理的数据
typeMIME类型[]被处理的数据的MIME类型
codetypeMIME类型[]源代码的MIME类型
archiveURL列表[]对象所使用的资源的URL列表
standby简介[]对象下载完毕前显示的消息
height长度[]高度
width长度[]宽度
usemapURL[]与对象一起使用的图像映射
nameNMTOKEN[]定义对象的名字
tabindex正整数[]使用Tab键切换焦点时的顺序
补充说明嵌入Flash示例:
<object width="宽度" height="高度" standby="对象下载完毕前显示的消息" data="swf路径" type="application/x-shockwave-flash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">
<param name="movie" value="swf路径" />
<img src="替代GIF" />
</object>
对象参数 <param ... />
nameCDATA[*]参数名
valueCDATA[*]参数值
valuetype(data|ref|object)["data"]参数值的数据类型(数据|引用|对象)
typeMIME类型[]参数的MIME类型

表单元素

表单%Attrs;<form> (%block; | script)* </form>
actionURL[*]接收表单数据的程序
method(get|post)["get"]提交数据的方法,get能传递的数据长度(编码后)不超过1024字符且不能上传文件,post无此限制。
enctypeMIME类型["application/x-www-form-urlencoded"]另一值"multipart/form-data"仅在上传文件时使用,且此时必须用post方法。
onsubmitjs脚本[]提交数据前执行的js脚本
onresetjs脚本[]重置数据前执行的js脚本
target框架名[base.target]将表单结果重定向到目标框架或窗口名称
字段组%Attrs;<fieldset> legend?, %Flow; </fieldset>
字段组标签%Attrs;<legend> %INLINE; </legend>
字段标签%Attrs;<label> %INLINE; </label>
forIDREF[*]目标字段的id属性值
单行文本|密码框%Attrs; %Focus;<input type="text|password" ... />
nameCDATA[*]字段名
valueCDATA[*]字段默认值
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
readonly(readonly)[]其值不能被用户修改,但是其值会提交给服务器
size正整数[]控件长度(按字符数计算)
maxlength正整数[]允许输入的最大字符数
onselectjs脚本[]选中事件
onchangejs脚本[]改变字段值事件
隐藏文本%Core;<input type="hidden" ... />
nameCDATA[*]字段名
valueCDATA[*]字段值
文件上传%Attrs; %Focus;<input type="file" ... />
nameCDATA[*]字段名
valueCDATA[]文件名(含路径)默认值
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
readonly(readonly)[]其值不能被用户修改,但是其值会提交给服务器
size正整数[]控件长度(按字符数计算)
onchangejs脚本[]改变字段值事件
acceptMIME列表[]限制用户可选择的文件类型
补充说明必须有 form.method="post" 和 form.enctype="multipart/form-data"
单选|复选%Attrs; %Focus;<input type="radio|checkbox" ... />
nameCDATA[*]字段名(单选按钮使用它进行分组)
valueCDATA[*]字段值
checked(checked)[]表示默认选中
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
readonly(readonly)[]其值不能被用户修改,但是其值会提交给服务器
图像提交按钮%Attrs; %Focus;<input type="image" ... />
nameCDATA[]字段名,浏览器会将单击处的 name.x, name.y 坐标发送给服务器
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
srcURL[*]图像的URL
altCDATA[*]替代文字
通用按钮%Attrs; %Focus;<button> (%Flow - a,表单元素) </button>
nameCDATA[]字段名
valueCDATA[]字段值(并不显示在按钮上)
type(button|submit|reset)["submit"]按钮类型(单击|提交|重置)
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
选择列表%Attrs; %Focus;<select> (optgroup|option)+ </select>
nameCDATA[*]字段名
size正整数["1|4"]同时显示的项数,不设multiple时默认为1,反之为4
multiple(multiple)[]允许多选,不设置则为单选
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
onchangejs脚本[]改变字段值事件
选项组%Attrs;<optgroup> (option)+ </optgroup>
label简介[*]该组的标签(名称),将会显示在每组首部
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
选项%Attrs;<option> #PCDATA </option>
valueCDATA[#PCDATA]条目的值,默认为元素包含的文本
selected(selected)[]表示默认选中
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
多行文本%Attrs; %Focus;<textarea> #PCDATA </textarea>
nameCDATA[*]字段名
rows正整数[*]输入区域的行数
cols正整数[*]输入区域的列数
disabled(disabled)[]禁用该控件(灰显),其值不会提交给服务器
readonly(readonly)[]其值不能被用户修改,但是其值会提交给服务器
onselectjs脚本[]选中事件
onchangejs脚本[]改变字段值事件

表格元素

表格%Attrs;<table> caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+) </table>
summary简介[]对表格内容的摘要描述
表格标题%Attrs;<caption> %INLINE; </caption>
列组%Attrs;<colgroup> (col)* </colgroup>
span正整数["1"]该组的列数(紧接上一个列组)
width混合长度[]宽度
align(left|center|right)[]水平对齐
valign(top|middle|bottom|baseline)[]垂直对齐
%Attrs;<col ... />
span正整数["1"]影响的列数(紧接上一个列)
width混合长度[]宽度
align(left|center|right)[]水平对齐
valign(top|middle|bottom|baseline)[]垂直对齐
补充说明仅用于不含span属性的<colgroup>元素中
表头|表脚|表正文%Attrs;<thead|tfoot|tbody> (tr)+ </thead|tfoot|tbody>
align(left|center|right)[]水平对齐
valign(top|middle|bottom|baseline)[]垂直对齐
补充说明必需保持 头 -> 脚 -> 正文 的顺序
表格行%Attrs;<tr> (th|td)+ </tr>
align(left|center|right)[]水平对齐
valign(top|middle|bottom|baseline)[]垂直对齐
表头|数据单元格%Attrs;<th|td> %Flow; </th|td>
abbr简介[]单元格内容缩写
axisCDATA[]一系列空格分割关键字列表,用于形成一个查询,而单元格的内容就是查询的结果
scope(row|col|rowgroup|colgroup)[](仅<th>)关联到<td>:所在行|所在列|行组|列组
rowspan正整数["1"]跨行数
colspan正整数["1"]跨列数
nowrap(nowrap)[]禁止换行
align(left|center|right)[]水平对齐
valign(top|middle|bottom|baseline)[]垂直对齐
height长度[]高度
width长度[]宽度