W3C

XHTML™ 1.0 可扩展超文本标记语言(第二版)

用XML 1.0重新形成的HTML 4

W3C 推荐标准 2000年1月26日, 2002年8月1日修订

本版本
http://www.w3.org/TR/2002/REC-xhtml1-20020801
最新版本:
http://www.w3.org/TR/xhtml1
上一版本:
http://www.w3.org/TR/2000/REC-xhtml1-20000126
差异标注版本:
http://www.w3.org/TR/2002/REC-xhtml1-20020801/xhtml1-diff.html
作者:
请浏览 致谢

请参考本文档的 勘误表 , 其中可能包含一些规范性的更正。 请浏览 本文档的翻译

此文档也提供了这些非标准格式的版本: Multi-part XHTML file, PostScript version, PDF version, ZIP archive, and Gzip'd TAR archive.


摘要

XHTML 1.0是作为 XML 1.0应用而重新制定的HTML 4。本规范定义 XHTML 1.0第二版以及其中与HTML 4对应的3种文档类型定义(DTDs)。每个元素的语义和它们的属性已经在W3C Recommendation for HTML 4中定义,它们是将来XHTML扩展的基础。只要遵循一套简单的指导方针,XHTML文档就能和现存的HTML用户代理程序兼容。

本文档的状况

本节描述本文档发布时的状况。其它的文档也许会取代本文档。W3C负责维护本文档系列的最新状况。

本文档是XHTML 1.0规范的第二版,整合了截至2002年8月1日的勘误表。 此版本和上一版本的区别在 差异标注版 中进行了标注。

XHTML 1.0第二版不是一个新版本(第一版发布于2000年1月26日)。 此文档的修订来自公众提出的修改意见和一直在进行的HTML工作组。 此版本没有实质性的改变——只是整合了各个勘误表。

此规范中已发现的错误,请参考: http://www.w3.org/2002/08/REC-xhtml1-20020801-errata

如果发现本文档中的错误,请发送到 www-html-editor@w3.orgarchive)。 关于HTML功能的公共讨论的邮件列表: www-html@w3.orgarchive).

本文档作为 W3C HTML Activity 的一部分发布。HTML工作组 members only 的目标在 HTML Working Group charter中进行讨论。

在发布时,工作组认为没有任何专利与本规范有关。在工作组的 专利披露页面 中也许可以找到目前与本规范有关的专利。

目前 W3C 的推荐标准和其他技术文件,请参阅此页面: http://www.w3.org/TR

快速目录

完整目录

1.什么是XHTML?

本节是知识介绍。

XHTML是一系列当前和将来的文档类型和模块,它由HTML 4 [HTML4]再生和扩展而来,HTML 4是其子集。XHTML系列文档基于XML,最终被设计用来与基于XML的用户代理一起工作。XHTML系列的详情及其发展过程在[XHTMLMOD]一节中详述。

XHTML 1.0(本规范)是XHTML系列的第一个文档。它是将3种HTML 4文档类型应用到XML 1.0 [XML]之后重新形成的。其目的是,作为一种语言,它的内容既符合XML,并且如果依照一些简单的指导方针,也能被HTML 4用户代理识别。开发者将它们的文档移植成为XHTML 1.0,会得到以下好处:

XHTML系列是Internet发展的下一步。现在迁移到XHTML,开发者在确保他们的文档向前向后兼容的同时,还能享有XML带来的好处。

1.1.什么是HTML 4?

HTML 4 [HTML4]是SGML (标准通用标记语言)的一个应用,遵守国际标准ISO 8879,被广泛的当作World Wide Web上的标准出版语言。

SGML是一种描述标记语言,特别是用于电子文档交换,文档管理和文档发布。HTML是SGML定义的语言的一个实例。

SGML出现在20世纪80年代中期,一直保持稳定。稳定是因为它有丰富的特征和具有灵活性。但是,灵活性带来一定程度的复杂性,限制了它在多种环境下的适应性,包括World Wide Web。

HTML最初的构想是作为一种交换科学和其它技术文档的一种语言,供那些不熟悉书写文档的专家使用。HTML规定一小套结构语义标签,适于书写相对简单的文档,从而解决了SGML复杂性的问题。除了简化文档结构外,HTML还加入了对超文本的支持,后来还增加了媒体功能。

在非常短的时间内,HTML流行起来,并且迅速超过了它最初的目的。出现了很多新元素,被用在HTML(作为标准)内部,HTML也被改编以用于垂直的、高度专业化的市场。众多的新元素导致文档在跨平台时出现兼容问题。

1.2.什么是XML?

XML™是Extensible Markup Language(可扩展标记语言)的缩写[XML]。

创造XML的目的是获得SGML的功能和灵活性,而去除其大部分复杂的内容。尽管是SGML衍生的一种受限制的格式,但是XML仍保留了SGML的大部分功能和丰富性,还保留了SGML的所有常用特性。

在保留这些有用的特性的同时,XML去掉了SMGL中很多更复杂的特性,这些特性使得书写文档和设计合适的软件既困难又昂贵。

1.3.为什么需要XHTML?

上文已经叙述来了移植到XHTML的好处。一般来说,移植到XHTML的好处有:

2.定义

本节是标准化的。

2.1.术语

本规范要用到下面的词条。这些词条基于ISO/IEC 9945-1:1990 [POSIX.1]中类似的定义,并扩展定义在[RFC2119]中:

可以(May)
在执行时,“可以(May)”被解释为一个可选的功能,在本规范中不是必须的,但可以提供。对于文档一致性,“可以”一词意味着不能使用可选的功能。“可选的(optional)”和“可以(May)”的定义相同。
必须(Must)
在本规范中,根据情况“必须(Must)”被解释为,强制执行或对于严格遵守XHTML的文档的强制要求。词条“应当(shall)”和“必须(Must)”的定义相同。
可选的(Optional)
参见“可以(May)”。
保留(Reserved)
一个值或行为未被指定,但是不允许用于符合规范的文档,也不被符合规范的用户代理支持。
应当(shall)
参见“必须(Must)”。
应该(Should)
在执行时,“应该(Should)”被解释为一个执行时的建议,但不是必须的。对于文档来说,“应该(Should)”被解释为:推荐编程使用,对于严格遵守XHTML的文档,则是必须的。
被支持的(Supported)
本规范中某些功能是可选的,如果支持此一个功能,它的行为被本规范定义。
未指定的(Unspecified)
一个值或行为未被指定时,规范书不定义此功能的可移植性要求,即使文档中使用了这个功能。如果一个文档存在这种情况,需要指定的行为,而不是在使用这个功能时允许任何行为,那么它不是一个严格遵守XHTML的文档。

2.2.常见词条

属性(Attribute)
属性是在DTD中声明过的元素的一个参数。属性的类型和取值范围,包括它可能的缺省值,都在DTD中定义。
DTD
DTD,又称文档类型定义,是一个XML声明集合,在其中定义遵从DTD的文档中使用的合法的结构,元素属性
文档(Document)
文档是一个数据流,还包括它引用的其它数据流。文档的结构是用相关的DTD定义的元素组织起来,用于保存信息。更多信息,请参阅文档一致性
元素(Element)
元素是在DTD中声明的文档的结构单位。元素的内容模型在DTD中定义,额外的语义可以在另外的元素描述中定义。
功能(Facilities)
功能包括元素属性和与元素属性相关的语义。
执行(Implementation)
参见 用户代理(User Agent)。
解析(Parsing)
解析是扫描文档的动作,文档包含的信息被过滤成元素的上下文结构包含的信息。
呈现(Rendering)
呈现是文档信息被表现的动作。呈现以最适合环境的形式完成(如声觉,视觉,打印)。
用户代理(User Agent)
用户代理一个符合规范的处理XHTML文档的系统。更多信息,请参阅用户代理一致性
验证(Validation)
验证是用相关的DTD检验文档的过程,以确信结构、元素的使用和属性的使用与DTD中的定义一致。
格式良好(Well-formed)
一个格式良好的文档的结构必须符合XML 1.0推荐标准2.1节中的规定[XML]。

3.XHTML 1.0的标准定义

本节是标准化的。

3.1.文档一致性

本版本的XHTML定义了严格遵循XHTML的文档,必须使用XML和XHTML 1.0命名空间中的元素和属性。XHTML结合其他命名空间使用,如RDF表达的元数据,请参阅3.1.2节

3.1.1.严格规范的文档

一个严格规范的XHTML文档是符合本规范描述的强制性功能的XML文档。必须符合以下所有条件:

  1. 它必须符合DTDs中的3个DTD之一和附录 B

  2. 文档的根元素必须是html

  3. 文档的根元素必须用xmlns属性指定XHTML的命名空间[XMLNS]。XHTML的命名空间在http://www.w3.org/1999/xhtml中定义。根元素示例如下:

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
    
  4. 在根元素之前,必须有一个DOCTYPE声明。DOCTYPE声明中包含的公共标识符必须是DTDs中的3种DTD之一,每种DTD有各自的正式公共标识符。系统标识符可以修改以表明本地系统。

    
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    
  5. DTD的子集不能覆盖DTD中的任何参数实体。

XML声明不是所有XML文档的必须部分;但是强烈建议XHTML文档作者在所有文档中使用XML声明。当字符编码不是默认的UTF-8或UTF-16时,这样的声明是必须的。这是一个包含了XML声明的XHTML示例:

<?xml version="1.0" encoding="UTF-8"?>
<!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" lang="zh-CN">
  <head>
    <title>Virtual Library</title>

  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
  </body>

</html>

3.1.2.在XHTML中使用其他命名空间

在XHTML命名空间中可以使用其它XML命名空间[XMLNS],尽管这样文档不能严格遵循XHTML。W3C以后将解决多命名空间的问题。例如,请参阅[XHTML+MathML]。

下面的例子演示XHTML 1.0如何联合MathML推荐标准使用:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>A Math Example</title>
  </head>

  <body>
    <p>The following is MathML markup:</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <apply> <log/>
        <logbase>

          <cn> 3 </cn>
        </logbase>
        <ci> x </ci>
      </apply>

    </math>
  </body>
</html>

下面的例子演示XHTML 1.0如何联合其它XML命名空间使用:

<?xml version="1.0" encoding="UTF-8"?>

<!-- initially, the default namespace is "books" -->
<book xmlns='urn:loc.gov:books'
    xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en">
  <title>Cheaper by the Dozen</title>
  <isbn:number>1568491379</isbn:number>
  <notes>

    <!-- make HTML the default namespace for a hypertext commentary -->
    <p xmlns='http://www.w3.org/1999/xhtml'>
        This is also available <a href="http://www.w3.org/">online</a>.
    </p>
  </notes>

</book>

3.2.用户代理一致性

一个符合规范的用户代理必须满足以下所有条件:

  1. # 为了符合XML 1.0推荐标准[XML],用户代理必须解析和评估XHTML文档的格式良好性。如果用户代理程序宣称自己是一个带验证功能的用户代理,它还必须验证文档引用的DTDs符合[XML]。
  2. 当用户代理程序宣称支持本规范中定义的或需要本规范通过标准引用的功能(facilities)时,它必须按功能的定义来支持。
  3. 当用户代理按把XHTML文档当做一般的XML来处理时,它应当只把ID类型的属性(如多数XHTML元素的id属性)识别成片段标识符。
  4. 如果用户代理遇到一个它不识别的元素,它必须显示元素的内容。
  5. 如果用户代理遇到一个它不识别的属性,它必须忽略整个属性的定义(即属性和属性值)。
  6. 如果用户代理遇到一个它不识别的属性值,它必须使用此属性的默认值。
  7. 如果遇到一个实体引用(未在此推荐标准或者XML推荐标准中定义),用户代理程序没有处理过其声明(如果声明是在用户代理程序没有读到的外部子集中时会发生),该实体引用应该作为字符处理(以&符号开始,以;分号结束),以构成实体参考。
  8. 在处理内容时,用户代理如果遇到它不认识的字符或认识但不能呈现字符实体引用,可以改用其他呈现方式提高相同的意义,否则必须以显眼的方式告诉用户无法正常呈现。
  9. 空白的处理按照以下规则。以下字符是[XML]定义的空白字符:

    XML处理程序将不同系统的行结束符规格化为单个换行符(LINE FEED)传递给应用程序。

    用户代理必须使用CSS的定义进行空白字符的处理[CSS2]. 注意:CSS2推荐标准没有明确解决非拉丁字符集(non-Latin)中的空白字符处理问题。在将来版本的CSS中将解决此问题,此处的引用将被更新。

请注意,一个标准的XHTML文件,必须符合上述规则,并且必须同时符合[XMLC14N]规则。

4.与HTML 4的区别

本节是知识介绍。

由于XHTML是XML的一个应用,一些在基于SGML的HTML 4 [HTML4]中完全合法的格式在XHTML中必须改变。

4.1.文档必须是格式良好的

格式良好性(Well-formedness)是[XML]引入的一个新概念。从本质上说,这意味着元素必须有结束标签,或者以特殊方式书写(在下文说明),并且所有元素必须正确。

尽管SGML规定层叠非法,但现有的浏览器普遍允许层叠。 Although overlapping is illegal in SGML, it is widely tolerated in existing browsers.

正确:嵌套元素。

<p>here is an emphasized <em>paragraph</em>.</p>

错误:层叠元素

<p>here is an emphasized <em>paragraph.</p></em>

4.2.元素和属性名必须小写

XHTML文档中的所有HTML元素和属性名必须使用小写。因为XML是大小写敏感的,所以必须遵守这个区别,如<li> 和 <LI> 是不同的标签。

4.3.非空元素必须具有结束标签

在基于SGML的HTML 4中,一些隐含结束意义的元素允许省略结束标签。XNL不允许省略结束标签。除了在DTD中被定义为空(EMPTY)的元素,所有元素必须有结束标签。在DTD中被定义为空(EMPTY)的元素可以使用结束标签使用空元素快速标签(参考 空元素)。

正确:结束了的元素

<p>一段话。</p><p>又一段话。</p>

错误:未结束的元素

<p>一段话。<p>又一段话。

4.4.属性值必须在引号中

所有的属性值必须用引号,即使是数字。

正确:在引号中的属性值

<td rowspan="3">

错误:不在引号中的属性值

<td rowspan=3>

4.5.属性最小化

XML不支持属性最小化。属性值对必须完整。像compactchecked这样的属性名不能不指定属性值而在元素中出现。

正确:没有最小化的属性

<dl compact="compact">

错误:最小化的属性

<dl compact>

4.6.空元素

空元素要么必须有结束标签,要么起始标签以/>结束。例如,<br/><hr></hr>。请参阅HTML兼容性指导方针中的信息,以保证向后兼容HTML 4用户代理。

正确:结束的空元素

<br/><hr/>

错误:未结束的空标签

<br><hr>

4.7.属性值中的空白字符处理

用户代理处理属性时,根据[XML]的3.3.3节的内容。

4.8.Script和Style元素

在XHTML中,script和style元素声明为#PCDATA内容。因此,<&被看作是标记的开始,&lt;&amp;这样的实体被XML处理程序看作为实体引用而分别被认为是<&。将script和style元素的内容包含在CDATA记号中避免了这些实体的扩张。

<script type="text/javascript">
<![CDATA[
... unescaped script content ...
]]>
</script>

CDATA部分被XML处理程序识别为文档对象模型中一个结点。请参阅1.3节 of DOM Level 1推荐标准[DOM]。

替代的方式是使用外部script和style文档。

4.9.SGML的禁止用法

SGML规定DTD的作者可以在一个元素内部排除特定的元素。这样的禁止(成为“排除”)在XML中是不可能的。

例如,严格版的 HTML 4 DTD 禁止任何深度的‘a’元素对另一‘a’元素的嵌套。在XML中无法写出这样的禁止。虽然这些禁止不能在DTD中定义,但是一些元素不应该被嵌套。标准化的元素的禁止用法中是这些元素和不能被这些元素包含的元素的汇总。

4.10.具有‘id’和‘name’属性的元素

HTML 4定义了name属性的元素有aappletformframeiframeimgmap。HTML 4还引入了id属性。这两个属性都是被设计作为片段标识符。

在XML中,片段标识符是ID类型,并且每个元素只能有一个ID类型的属性。因此,在XHTML 1.0中,id属性被定义为ID类型。为保证XHTML 1.0文档是结构良好的XML文档,对上述元素定义一个片段标识符时,XHTML文档必须使用id属性。请参考HTML兼容性指导方针的信息,确保XHTML文档以text/html媒体类型使用时,这些“锚”能向后兼容。

注意,在XHTML 1.0中,不赞成使用name属性,在以后的XHTML版本中将被删除。

4.11.预定义值的属性

HTML 4和XHTML都有一些属性具有预定义值并且只可以使用有限的属性值(比如input元素的type属性)。在SGML和XML中,这种属性称为枚举属性。在HTML 4中,这些值是不区分大小写的,所以值TEXT与值text是相同的。在XML中,这些值是区分大小写的,并且在XHTML 1中所有这些值都定义为小写。

4.12.实体引用十六进制值

SGML和XML都允许使用十六进制值作为引用字符。在SGML中,这些引用可以使用&#Xnn;或&#xnn;。在XML中,必须使用小写形式(如&#xnn;)。

5.兼容性问题

本节是标准化的。

虽然没有要求XHTML 1.0必须兼容现有的用户代理,但是实际上很容易就可以实现。创建兼容文档的指导方针请参考附录 C

5.1.因特网媒体类型

遵守附录 C中的指导方针的XHTML文档,按照“HTML兼容性指导方针”可以声明因特网媒体类型为“text/html”,用以兼容大部分HTML浏览器。这些文档和其他遵守规范的文档同样可以声明因特网媒体类型为“application/xhtml+xml”,此类型在[RFC3236]中进行了定义。如需关于XHTML使用媒体类型的更多的资料,请参考此节:[XHTMLMIME]。

A. DTDs

本附录是标准化的。

这些DTD和实体构成了本规范的一个标准化的部分。本规范的完全DTD文件集以及XML声明和SGML开放目录包含在这个zip文件和这个gzip'd tar文件中。如果用户要使用DTD的本地拷贝,需要下载那些文件而不是使用下面的特定的DTD引用。

A.1.文档类型定义

这些DTD与HTML 4的DTD类似。验证内容时,W3C推荐使用权威版本的DTD进行系统标识符定义。当DTD模块化之后,构件DTD使用的方法也许更能和HTML 4相对应。如果你要本地使用DTD,你需要下载这个版本中的一个。为了全面性,规范化的DTD版本如下:

A.1.1. XHTML-1.0-Strict

此文件DTD/xhtml1-strict.dtd是本规范的一个标准化部分。此文件的包含注释的版本:separate section

A.1.2. XHTML-1.0-Transitional

此文件DTD/xhtml1-transitional.dtd是本规范的一个标准化部分。此文件的包含注释的版本:separate section

A.1.3. XHTML-1.0-Frameset

此文件DTD/xhtml1-frameset.dtd是本规范的一个标准化部分。此文件的包含注释的版本:separate section

A.2.实体集

XHTML的实体集和HTML 4的相同,但是被修改成有效的XML 1.0实体声明。注意欧洲货币符号的实体(&euro;&#8364;&#x20AC;)是在特殊字符部分定义的。

A.2.1. Latin-1 字符

此文件DTD/xhtml-lat1.ent是本规范的一个标准化部分。此文件的包含注释的版本:separate section

A.2.2.特殊字符

此文件DTD/xhtml-lat1.ent是本规范的一个标准化部分。此文件的包含注释的版本:separate section

A.2.3.符号

此文件DTD/xhtml-symbol.ent是本规范的一个标准化部分。此文件的包含注释的版本:separate section

B.元素的禁止用法

本附录是标准化的。

下列元素禁止包含有些元素(参考 SGML的排除用法)。 这些禁止应用于所有深度的嵌套,即保括所有子元素。

a
禁止包含其他a元素。
pre
禁止包含:imgobjectbigsmallsubsup元素。
button
禁止包含:inputselecttextarealabelbuttonformfieldsetiframeisindex元素。
label
禁止包含其他label元素。
form
禁止包含其他form元素。

C.HTML兼容性指导方针

本附录是知识介绍。

本附录为希望XHTML文档兼容现存的HTML浏览器的XHTML作者总结设计指导方针注意,此建议不定义符合HTML规范的用户代理如何处理HTML文档。也不定义因特网媒体类型text/html的含义。对于这些定义,请分别浏览[HTML4]和[RFC2854]。

C.1.处理说明和XML声明

一些用户代理程序会显示处理说明。但是,注意当文档中没有XML声明时,文档只能用缺省的字符编码UTF-8 或 UTF-16。 必须认识到,处理说明呈现在一些用户代理上。并且,一些用户代理解释XML声明表示此文档是无法识别的XML而不是HTML,因此可能无法按照预期呈现出文档。为了兼容这些历史遗留的浏览器,你可能想避免使用处理说明和XML声明。但是要注意,当文档中没有XML声明时,改文件只能使用默认的字符编码UTF-8或UTF-16。

C.2.空元素

在空元素结尾的/>前加一个空格,如<br /><hr /><img src="karen.jpg" alt="Karen" />。还有,使用最小化的标签语法,如<br />,因为另一种XML允许的语法<br></br>在很多现存的用户代理中会导致不可靠的结果。

C.3.元素最小化与无内容的元素

内容模型不是EMPTY的元素,在为空的场合(如空title或空段落),不要用最小化形式(如,用<p> </p>,不用<p />)。

C.4.嵌入的样式表和脚本

如果你的样式表使用<&]]>--,请用外部样式表。如果你的脚本使用<&]]>--,请用外部脚本。注意XML解析器会在不告知的情况下除去注释的内容。因此,以前用注释的方法“隐藏”脚本和样式表的习惯使文档可以向后兼容,但是可能在基于XML的用户代理上不能按预期工作。

C.5.属性值内的换行

在属性值中避免使用换行和多个空白字符。用户代理在处理这些情况时不一致。

C.6.Isindex

在文档的head部分不要使用超过一个isindex元素。不赞成使用isindex元素,赞成使用input元素。

C.7.langxml:lang属性

当指定元素的语言时,同时使用langxml:lang属性。xml:lang的属性值优先被采用。

C.8.片段标识符

在 XML中,以"#foo"形式结束片段标识符的URI引用[RFC2396]不是指元素有一个属性name="foo";而是指元素有一个被定义为ID类型的属性,如,HTML 4中的id属性。很多HTML客户程序不支持ID类型属性的这种用法,所以,可以将相同的值同时附给这两个属性,以保证最大程度的向后和向前兼容。(如<a id="foo" name="foo">...</a>)。

此外,因为ID类型属性的合法值集比CDATA类型属性的值集小得多,name属性被改为NMTOKEN。这个属性被限制为只有和ID类型或XML 1.0 2.3节第5部分中的Name同样的值。不幸的是,XHTML 1.0的DTD不能表示出这个限制。因为这个改变,在转换现有的HTML文档时要加以注意。如果在转换时值可能会改变,这些属性的值在文档中必须是唯一的,有效的,并且任何对这些片段标识符的引用(不管是内部还是外部)必须更新。

注意,在XML 1.0第2.3节第5部分收集的合法值远远大于HTML 4中定义的IDNAME中允许使用的值。当定义能向后兼容的片段标识符时,只能使用匹配[A-Za-z][A-Za-z0-9:_.-]*的字符。更多信息请参考:[HTML4]中的Section 6.2

最后,注意XHTML 1.0不赞成在aappletformframeiframeimg、和map 元素中使用name属性,在以后的XHTML版本中将移除。

C.9.字符编码

过去,HTML文档的字符编码可以通过指定web服务器的HTTP Content-Type标头,或者通过文档内的meta元素。而在XML文档中,字符编码通过指定XML声明(如,<?xml version="1.0" encoding="EUC-JP"?>)。为了使用指定的字符编码发送当前文档,最好的方法是确保web服务器提供正确的标头。如果不能确保这点,一个文档如果想明确的设置字符编码必须包含XML的编码声明和meta元素的http-equiv声明(如,<meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />)。在遵守XHTML的用户代理中,XML声明的编码声明优先采用。

注意:如果一个文档包含meta http-equiv声明,此文档总可以被HTTP服务器和/或用户代理作为声明中的因特网媒体类型解析。如果一个文档作为多媒体类型提供,此HTTP服务器必须设置文档的编码。

C.10.布尔属性

一些HTML用户代理不能解释布尔属性的完全(非最小化)形式,而这是XML 1.0必须的。注意这个问题不会影响用户代理对HTML 4的兼容。包括以下一些属性:compactnowrapismapdeclarenoshadecheckeddisabledreadonlymultipleselectednoresizedefer

C.11.文档对象模型和XHTML

文档对象模型level 1推荐标准[DOM]定义了XML和HTML 4的文档对象模型的接口。 HTML 4文档对象模型规定HTML元素名和属性名以大写形式返回。XML文档对象模型规定元素名和属性名以它们被指定的形式返回。在XHTML 1.0中,元素和属性指定为小写形式。对这个显著的差别可以用两种方式处理:

  1. 通过DOM访问以text/html因特网媒体类型提供的XHTML文档的用户代理可以使用HTML DOM,而且可以依赖这些接口返回的大写的元素名和属性名。
  2. 访问以text/xmlapplication/xmlapplication/xhtml+xml因特网媒体类型提供的XHTML文档的用户代理也可以使用XML DOM。元素名和属性将以小写形式返回。并且,一些XHTML元素可以也可以不出现在对象树中,因为在内容模型中它们是可选的(如table中的tbody元素)。 在HTML 4中,一些元素可以允许被最小化以至于它们的开始标签和结束标签都被忽略(SGML的特性),所以会发生这种情况。但是在XML中不行。XHTML使元素成为可选的,而不是要由文档作者来插入外来元素。相应地,用户代理需要适应这一点。关于此主题的更多信息,请参考:[DOM2]

C.12.属性值中使用连接符$amp;(以及其他)

在SGML和XML中,连接符(“&”)声明一个转义字符的开始(如,使用&reg;表示注册商标“®”)。不幸的是,许多HTML用户代理已悄悄地忽略掉HTML中的不正确的连接符——不作为转义字符。基于XML的用户代理不会容忍这种错误的用法,并且任何错误地使用连接符的文档被识别为“无效”,而且当然不符合本规范。为了确保文档兼容历史遗留的HTML用户代理和基于XML的用户代理,文档中使用的连接符如果希望被作为普通的字符呈现,必须使用转义字符(如,“&amp;”)。例如,当一个a元素的href属性指向一个接收参数的 CGI脚本时,它必须使用http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user,而不是http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user

C.13.层叠样式表(CSS)和XHTML

层叠样式表level 2推荐标准[CSS2]定义了样式,用于解析HTML和XML文档的树形结构。解析时的不通将导致不同的视觉或听觉效果,这取决于使用的选择器。下面的技术可以减少对文档的这种影响,不用修改就可以用各自的媒体类型提供:

  1. 用于XHTML的CSS样式表应该用小写的元素和属性名。
  2. 在table中,tbody元素会被HTML用户代理的解析器推断出,但是XML用户代理的解析器不会这么做。所以如果需要在CSS选择器中进行引用,应该总是明确地加上tbody元素。
  3. 在XHTML命名空间中,用户代理将把“id”属性识别为一个ID类型的属性。因此,即使用户代理不能读取DTD,样式表也能够继续使用“#”快速选择器语法。
  4. 在XHTML命名空间中,用户代理将识别“class”属性。因此,样式表能构继续使用“.”快速选择器语法。
  5. CSS针对HTML和XML文档定义了不同的一致性标准;注意,在XHTML文档以HTML提供时,用HTML规则,并且在XHTML文档以XML表达时,使用XML规则。

C.14.以XML提供时的引用样式元素

在HTML 4和XHTML中,style元素可以用来定义文档内部的样式规则。在XML中,使用XML样式声明定义样式规则。为了兼容此习惯,style元素应具有id属性片段标识符,并且XML样式声明应引用此标识符。如:

<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"?>
<?xml-stylesheet href="#internalStyle" type="text/css"?>
<!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="en" lang="en">
<head>
<title>An internal stylesheet example</title>

<style type="text/css" id="internalStyle">
  code {
    color: green;
    font-family: monospace;
    font-weight: bold;
  }
</style>
</head>
<body>
<p>
  This is text that uses our 
  <code>internal stylesheet</code>.

</p>
</body>
</html>

C.15.HTML和XML中的空白字符

有些字符在HTML文档中是合法的,但是在XML文档中是非法的。例如,在HTML中,进纸符(U+000C)被处理成一个空白字符,而在XHTML中,按照XML的字符定义,它是非法的。

C.16.命名字符引用 &apos;

命名字符&apos;(撇号,U+0027)在XML 1.0中进行了引进,但是在HTML中没有出现。因此作者应使用&#39;替代&apos;,以兼容HTML 4用户代理。

D.致谢

本节是知识介绍。

本规范由W3C HTML工作组成员参与编写。

在第二版发布时,全体成员如下:

Steven Pemberton, CWI/W3C (HTML Working Group Chair)
Daniel Austin, Grainger
Jonny Axelsson, Opera Software
Tantek Çelik, Microsoft
Doug Dominiak, Openwave Systems
Herman Elenbaas, Philips Electronics
Beth Epperson, Netscape/AOL
Masayasu Ishikawa, W3C (HTML Activity Lead)
Shin'ichi Matsui, Panasonic
Shane McCarron, Applied Testing and Technology
Ann Navarro, WebGeek, Inc.
Subramanian Peruvemba, Oracle
Rob Relyea, Microsoft
Sebastian Schnitzenbaumer, SAP
Peter Stark, Sony Ericsson

在第一版发布时,全体成员如下:

Steven Pemberton, CWI (HTML Working Group Chair)
Murray Altheim, Sun Microsystems
Daniel Austin, AskJeeves (CNET: The Computer Network through July 1999)
Frank Boumphrey, HTML Writers Guild
John Burger, Mitre
Andrew W. Donoho, IBM
Sam Dooley, IBM
Klaus Hofrichter, GMD
Philipp Hoschka, W3C
Masayasu Ishikawa, W3C
Warner ten Kate, Philips Electronics
Peter King, Phone.com
Paula Klante, JetForm
Shin'ichi Matsui, Panasonic (W3C visiting engineer through September 1999)
Shane McCarron, Applied Testing and Technology (The Open Group through August 1999)
Ann Navarro, HTML Writers Guild
Zach Nies, Quark
Dave Raggett, W3C/HP (HTML Activity Lead)
Patrick Schmitz, Microsoft
Sebastian Schnitzenbaumer, Stack Overflow
Peter Stark, Phone.com
Chris Wilson, Microsoft
Ted Wugofski, Gateway 2000
Dan Zigmond, WebTV Networks

E.参考文献

本节是知识介绍。

[CSS2]
"Cascading Style Sheets, level 2 (CSS2) Specification", B. Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.
Latest version available at: http://www.w3.org/TR/REC-CSS2
[DOM]
"Document Object Model (DOM) Level 1 Specification", Lauren Wood et al., 1 October 1998.
Latest version available at: http://www.w3.org/TR/REC-DOM-Level-1
[DOM2]
"Document Object Model (DOM) Level 2 Core Specification", A. Le Hors, et al., 13 November 2000.
Latest version available at: http://www.w3.org/TR/DOM-Level-2-Core
[HTML]
"HTML 4.01 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 December 1999.
Latest version available at: http://www.w3.org/TR/html401
[POSIX.1]
"ISO/IEC 9945-1:1990 Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language]", Institute of Electrical and Electronics Engineers, Inc, 1990.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, November 1996. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[RFC2046]
"RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", N. Freed and N. Borenstein, November 1996.
Available at http://www.ietf.org/rfc/rfc2046.txt. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[RFC2119]
"RFC2119: Key words for use in RFCs to Indicate Requirement Levels", S. Bradner, March 1997.
Available at: http://www.ietf.org/rfc/rfc2119.txt
[RFC2376]
"RFC2376: XML Media Types", E. Whitehead, M. Murata, July 1998.
This document is obsoleted by [RFC3023].
Available at: http://www.ietf.org/rfc/rfc2376.txt
[RFC2396]
"RFC2396: Uniform Resource Identifiers (URI): Generic Syntax", T. Berners-Lee, R. Fielding, L. Masinter, August 1998.
This document updates RFC1738 and RFC1808.
Available at: http://www.ietf.org/rfc/rfc2396.txt
[RFC2854]
"RFC2854: The text/html Media Type", D. Conolly, L. Masinter, June 2000.
Available at: http://www.ietf.org/rfc/rfc2854.txt
[RFC3023]
"RFC3023: XML Media Types", M. Murata, S. St.Laurent, D. Kohn, January 2001.
This document obsoletes [RFC2376].
Available at: http://www.ietf.org/rfc/rfc3023.txt
[RFC3066]
"Tags for the Identification of Languages", H. Alvestrand, January 2001.
Available at: http://www.ietf.org/rfc/rfc3066.txt
[RFC3236]
"The 'application/xhtml+xml' Media Type", M. Baker, P. Stark, January 2002.
Available at: http://www.ietf.org/rfc/rfc3236.txt
[XHTML+MathML]
"XHTML plus Math 1.1 DTD", "A.2 MathML as a DTD Module", Mathematical Markup Language (MathML) Version 2.0. Available at: http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd
[XHTMLMIME]
"XHTML Media Types", Masayasu Ishikawa, 1 August 2002.
Latest version available at: http://www.w3.org/TR/xhtml-media-types
[XHTMLMOD]
"Modularization of XHTML", M. Altheim et al., 10 April 2001.
Latest version available at: http://www.w3.org/TR/xhtml-modularization
[XML]
"Extensible Markup Language (XML) 1.0 Specification (Second Edition)", T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, 6 October 2000.
Latest version available at: http://www.w3.org/TR/REC-xml
[XMLNS]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, 14 January 1999.
XML namespaces provide a simple method for qualifying names used in XML documents by associating them with namespaces identified by URI.
Latest version available at: http://www.w3.org/TR/REC-xml-names
[XMLC14N]
"Canonical XML Version 1.0", J. Boyer, 15 March 2001.
This document describes a method for generating a physical representation, the canonical form, of an XML document.
Latest version available at: http://www.w3.org/TR/xml-c14n

Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0