|
XHTML™ 1.0: 可扩展超文本标记语言用XML 1.0重新形成的HTML 4W3C推荐标准,2000年1月26日
(Postscript version,PDF version,ZIP archive,或 Gzip'd TAR archive) Copyright 2000 W3C© (MIT,INRIA,Keio),All Rights Reserved. W3C liability,trademark,document use and software licensing rules apply.
摘要XHTML 1.0是作为XML1.0应用而重新制定的HTML4。本规范书定义XHTML 1.0以及其中与HTML 4对应的3种文档类型定义(DTD,Document Type Definition)。 每个元素的语义和它们的属性已经在W3C Recommendation for HTML 4中定义,它们是XHTML将来扩展的基础。只要遵循一小套指导方针,XHTML文档就能和现存的HTML用户代理程序兼容。 本文档的状况本节描述本文档发布时的状况。其它的文档也许会取代本文档。W3C负责维护本文档系列的最新状况。本文档由W3C的成员和一些对此感兴趣的团体审阅,并经主管认可而成为W3C推荐标准。 这是一个稳定的文档,可以作为参考材料或在其它文档中作为标准引用。 W3C制定本推荐标准的目的就是使大家注意到本规范说明书,使之广泛传播,增强Web的功能和互用性.本文档是W3C HTML Activity的一部分. HTML Working Group (members only) 的目的在HTML Working Group charter (members only) 中论述. W3C 推荐标准和其它的技术文档在http://www.w3.org/TR中. 关于HTML特征的公共讨论在邮件列表 www-html@w3.org (archive). 如果发现本文档中存在的错误,请告知 www-html-editor@w3.org. 在本规范说明书中的已发现的错误列于 http://www.w3.org/2000/01/REC-xhtml1-20000126-errata. 目录
1. 什么是 XHTML?XHTML是一系列当前和将来的文档类型和程序块,它由HTML 4 [HTML]再生和扩展而来,HTML 4是其子集。XHTML系列文档基于XML,最终被设计用来与基于XML的用户代理程序一起工作。XHTML家族的详情及其发展过程在未来趋势一节中详述。 XHTML 1.0(本规范书)是XHTML家族的第一个文档。它是将3种HTML 4文档类型应用到XML 1.0 [XML]之后重新形成的。其意图是,作为一种语言,它的内容既符合XML,并且如果依照一些简单的指导方针,也能被HTML4用户代理程序识别。开发者将它们的文档移植成为XHTML 1.0,会得到以下好处:
XHTML家族是Internet发展的下一步。 将现在将文档移植成XML,开发者在确保他们的文档向前后兼容的同时,还能享有进入XML世界带来的好处。 1.1 什么是HTML 4?HTML 4 [HTML] 是SGML (Standard Generalized Markup Language) 的一个应用,遵从国际标准ISO 8879,被广泛的当作 World Wide Web上的标准出版语言。 SGML是一种描述标记语言,特别是那些用于电子文档交换,文档管理和文档发布语言的语言。HTML是SGML定义的语言的一个实例。 SGML出现在80年代中期,一直保持得很稳定。稳定是原因是它有丰富的特征和具有灵活性。但是,灵活性的带来一定程度的复杂性,限制了它在多种环境下的适应性,包括World Wide Web。 HTML最初的构想是作为一种交换科学和其它技术文档的一种语言,供那些不熟悉书写文档的专家使用。HTML规定一小套结构语义标签,适于书写相对简单的文档,从而解决了SGML复杂性的问题。除了简化了文档结构外,HTML还加入了对超文本的支持,以后还增加了媒体功能。I 在非常短的时间内,HTML变得广泛流行,并且很快超出了其原来的目的。HTML(标准)内部的新元素以很快的速度创造出来,HTML也被很快的改编以用于垂直的,高度专门化的市场。多余的新元素导致文档在跨平台时的兼容问题。 随着软件和平台不一致性增加,很显然,“经典的”HTML 4在这些平台上使用的适用性就会受到一些限制。 1.2 什么是 XML?XML™ [XML]是Extensible Markup Language的缩写,创造XML的目的是重新获得SGML的能力和灵活性,而去除其大部分复杂的东西。尽管是一个受限制SGML的形式,但是XML仍保留了SGML的大部分功能和丰富性,还保留了SGML的所有常用特性。 在保留这些有用的特性的同时,XML去掉了SMGL中很多更复杂的特性,这些特性使得书写和设计合适的软件既困难又昂贵。 1.3 为什么需要XHTML?上面已经提到了移植到XHTML的好处,一般来说,移植到XHTML的好处有:
2. 定义2.1 术语本规范书要用到下面的词条。这些词条基于ISO/IEC 9945-1:1990 [POSIX.1]中类似的定义,并扩展定义在[RFC2119]中:
2.2 常见词条
3. XHTML 1.0的标准定义3.1 文档一致性本版本 XHTML 提供了严格的遵循XHTML文档的定义,受限于XHTML名址提供的标签和属性。使用XHTML其它名址空间的信息,如RDF表达的元数据,请参看Section 3.1.2 。 3.1.1 严格遵循的文档。一个严格遵循XHTML的文档只需要本规范书描述的强制性功能,必须依照下列标准:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "DTD/xhtml1-frameset.dtd"> 下面是一个最小的XHTML文档示例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Virtual Library</title> </head> <body> <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> </body> </html> 注意在这个例子中含有XML声明。 XML声明并不是在所有的XML文档中都是必须的。XHTML被强烈建议使用XML声明。当字符编码不是缺省的UTF-8或UTF-6时,这样的声明是必须的。 3.1.2 在XHTML中使用其它名址空间在XHTML名址空间中可以用 [XMLNAMES]使用其它XML名址空间,尽管这样文档会不是严格遵循XHTML的文档。W3C将在以后致力为多名址空间指定一致性的问题。下面的例子说明XHTML1.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> 下面的例子说明XHTML1.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 用户代理程序一致性一个遵从的用户代理程序必须遵照下面所有标准:
XML处理程序将不同系统的行结束码规格化为单个换行附传递给应用。因此XHTML还必须将下列字符看成空白字符:
对 'xml:space' 属性被设为”保留”的元素,用户代理程序必须保持所有空白字符的原样 (引导和结尾处空白字符除外,这些字符应该被删除). 否则,按下列规则处理空白字符:
属性的值中的空白符的处理方式按照 4. 与HTML 4的区别因为XHTML是XML的一个应用,一些在基于SGML的HTML 4中完全合法的习惯在XHTML中必须改变。 4.1 文档必须是编排良好的编排良好性 Well-formedness是[XML]引入的一个新概念。从本质上说,这意味着元素必须有结束标签,或者必须以特殊方式书写(在下面说明)。元素必须嵌套,尽管SGML规定层叠非法,但现有的浏览器普遍允许层叠。 正确:嵌套元素。 <p>here is an emphasized <em>paragraph</em>.</p> 不正确:层叠元素。 <p>here is an emphasized <em>paragraph.</p></em> 4.2 元素和属性名必须小写对所有HTML元素和属性名,XHTML 文档必须使用小写。 因为XML是大小写敏感的,所以这个差别是必须的。如 <li> 和 <LI> 是不同的标签。 4.3 对非空元素,必须使用结束标签在基于 SGML的 HTML 4 中,一些隐含结束意义的元素允许忽略结束标签。而在基于XML的XHTML中,这种忽略不被允许。除了在DTD中被声明为空的元素,所有元素必须有结束标签。 正确:结束了的元素。 <p>here is a paragraph.</p><p>here is another paragraph.</p> 不正确:未结束元素。 <p>here is a paragraph.<p>here is another paragraph. 4.4 属性值必须在引号中所有的属性必须用引号,即使是数字。 正确:在引号中的属性值 <table rows="3"> 不正确:不在引号中的属性值。 <table rows=3> 4.5 属性最小化XML 不支持属性最小化. 属性值对必须写全。象compact,checked这样的属性名不能不指定属性值而在元素中出现。 正确:没有最小化的属性 <dl compact="compact"> 不正确:最小化属性 <dl compact> 4.6 空元素空元素要么必须有结束标签,要么起始标签以 />结束 . 例如,<br/>或<hr></hr> . 请参看HTML兼容性指导 HTML Compatibility Guidelines 中的信息,以保证向后兼容HTML 4用户代理程序
正确:结束的空元素 <br/><hr/> 错误:未结束的空标签 <br><hr> 4.7 属性值中的空白字符处理对属性值,用户代理程序将删去引导和后序空白符,将一个或多个空白符(包括换行)转换成单个字符间空间(在西方书写体中是一个ASCII空格) See Section 3.3.3 of [XML]。4.8 Script and Style 元素在XHTML中,script和style元素声明为 #PCDATA 内容形式,因此,< 和
& 被看作是标识的开始,<和& 这样的实体被XML处理程序看作为实体引用而分别被认为是< 和
& . 将script和style元素的内容包裹在CDATA记号部分中避免了这些实体的扩张。
<script> <![CDATA[ ... unescaped script content ... ]]> </script>
部分被 XML
处理程序识别,是文档对象模型中一个结点。请参看1.3节Section 1.3的DOM LEVEL 1推荐标准[DOM]。
替代的方式是使用外部script和style文档。 4.9 SGML 禁止SGML 给作者的DTD可以指定在一个元素内部禁止出现的元素。这样的禁止在XML中是不可能的。 例如,严格的 HTML 4 DTD 禁止任何深度的’a’元素对另一’a’元素的嵌套。在XML中无法写出这样的禁止。尽管这些禁止不能在DTD中定义,一些元素不应该被嵌套。在标准化的附录B Appendix B中是这些元素的汇总。4.10 具有 'id' 和 'name' 属性的元素HTML 4 定义了name属性的元素有 a ,applet ,form ,frame ,iframe ,img ,and
map . HTML 4还引入了
id 属性.
这两个属性都是被设计作为片段标识符。
在XML中,片段标识符是ID类型,每个元素只能有一个ID类型的属性。因此,在XHTML1.0中,id属性被定义为ID类型。为保证XHTML1.0文档是结构良好的XML文档,在定义一个片段标识符时,XHTML文档必须使用id属性,即使是对那些以前用name属性的元素。请参看 HTML Compatibility Guidelines 的信息,确保XHTML文档以text/html媒体类型使用时,这些”锚”能向后兼容。注意,在XHTML 1.0中, name 属性不被正式支持,在以后的XHTML版本中将被删除。
5. 兼容性问题尽管XHTML不必和已有的用户代理程序兼容,在操作上它很容易实现。创建兼容文档的指导方针在 Appendix C中。5.1 Internet 媒体类型在本推荐标准发布时,基于XML的应用的通用MIME标签问题还未被解决。 虽然如此,依照 Appendix C中指导方针的XHTML文档可以标为"text/html"媒体类型,因为这被大多数浏览器兼容。本文档对XHTML文档的其它MIME标签不做推荐。6. 未来趋势XHTML 1.0 提供了一类文档类型的基础,此类文档将扩展xhtml和包含XHTML子集。为了广泛的支持新设备和新应用,定义模块和指定联合这些模块的机制。 这个机制将用统一的方式定义新模块,以扩展和子集XHTML。 6.1 模块化 HTML因为XHTML的应用从传统的桌面用户代理程序转移到其它平台,显然,在所有的平台上不一定要用到所有的XHTML元素。 例如,手上设备或蜂窝电话可以只支持XHTML元素的一个子集。 模块化的过程将XHTML分为一系列小的元素集。在不同的情况需要时,它们又可以重新联合起来。 这些模块将在以后的W3c文档中定义。 6.2 子集和可扩展性模块化带来几个好处:
6.3 文档 协议文档 协议指明了一组文档的句法和语义。遵循文档协议提供了保证文档互用性的基础。文档协议指定处理此类文档所需的功能,如,可以使用哪种图像文件类型,脚本的级别,样式表的支持情况,等等。 对于产品设计者,这可以使不同的团体定义他们自己的标准协议。 对于作者. 这可以使他们避免为不同的客户写不同的文档版本。 对于专业群体,如化学家,医生或数学家,这可以允许用标准的HTML元素加上一组适合专家需要的元素来建立一个特殊的协议。 附录A. DTDs本附录是标准化的. 这些 DTD 和实体构成了本规范书的一个标准化的部分。本规范书完全的 DTD 文件集以及XML声明和SGML开放目录在一个 zip file文件中。A.1 文档类型定义(Document Type Definitions)这些 DTD 类似 HTML 4 的DTD. 当DTD模块化之后,构件DTD使用的方法也许更能和HTML 4相对应。 A.2 实体集XHTML的实体集和HTML 4的相同,但是被修饰成有效的XML 1.0实体声明。注意欧洲货币符号的实体 ( € or
€ 或
€ )
是在特殊符号部分定义。
附录 B. 禁止元素This appendix is normative. 下面的元素在包含其它元素时有禁止(参看 Section 4.9)。 这些禁止应用于所有深度的嵌套,即,保括子元素。
a 元素。
img ,object ,big ,small ,sub ,或
sup 元素。
input ,select ,textarea ,label ,button ,form ,fieldset ,iframe 或
isindex 元素。
form 元素。
附录 C. HTML兼容性指导This appendix is informative. 本附录总结设计时的方针,指导作者书写可在现有HTML用户代理程序中显示的XHTML文档。 C.1 处理说明一些用户代理程序会显示处理说明。但是,注意当文档中没有XML声明时,文档只能用缺省的字符编码UTF-8 或 UTF-16。 C.2 空元素在空元素结束符 / 和
> 前加一个空格,如
<br />,<hr /> 和 <img src="karen.jpg" alt="Karen" />.
还有,使用最小化的标签语法,如<br />,因为另一种XML允许的语法 <br></br>
在很多现有用户代理程序会导致不可靠的结果。
C.3 元素最小化和空元素内容内容模型不是空的元素,在为空的场合(如空title或空段落),不要用最小化形式(如 用 <p> </p>,不用 <p />). C.4 嵌入的样式表和Script如果你的样式表使用 < 或
& 或
]]> 或
--, 用外部样式表。如果你的script用
< 或
& 或
]]> 或
--, 用外部script。
注意XML分析程序会在不告知的情况下除去注释的内容。因此,以前用注释的方法”隐藏”script和样式表的习惯使文档可以向后兼容,但是可能在基于XML的执行时不能按预期工作。
C.5 在属性值内部分行在属性值中避免使用分行和多个空格符。用户代理程序处理这些情况时不一致。 C.6 Isindex在文档的head部分不要使用超过一个 isindex 元素.
isindex
元素不被赞成使用,赞成使用input 元素。
C.7lang 和
xml:lang 属性
在指定元素的语言时同时使用 lang
和 xml: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类型或XML1.0 2.5节中的Name产品同样的值。不幸的是,XHTML的DTD不能表示出这个限制。因为这个改变,在转换现有的HTML文档时要加以注意。 如果在转换时值可能会改变,这些属性的值在文档中必须是唯一的,有效的,任何对这些 片段标识符的引用(不管是内部还是外部)必须更新。
a ,applet ,form ,frame ,iframe ,img ,和
map
元素中使用name属性,在以后的XHTML版本中,它将被去除。
C.9 字符编码要指定文档中的字符编码,同时在xml声明中使用编码属性指定 (如. <?xml version="1.0" encoding="EUC-JP"?>) 和在meta中用 http-equiv 语句 (如 <meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />).xml处理指令的编码属性值在前。 C.10 布尔属性一些HTML用户代理程序在布尔属性以完全(非最小化)形式出现时不能解释它们,而这是XML1.0必须的。注意这个问题不会影响用户代理程序对HTML 4的兼容。包括以下一些属性: compact ,nowrap ,ismap ,declare ,noshade ,checked ,disabled ,readonly ,multiple ,selected ,noresize ,defer .
C.11 文档对象模型和 XHTML文档对象模型 level 1 推荐标准 [ DOM] 定义XML和HTML 4的文档对象模型。 HTML 4 文档对象模型规定HTML元素名和属性名以大写形式返回。XML文档对象模型规定元素名和属性名以它们被指定的形式返回。在 XHTML 1.0中,元素和属性指定为小写形式。对这个显著的差别可以用两种方式处理:
tbody 元素). 在HTML
4中,一些元素可以允许被最小化以至于它们的开始标签和结束标签都被忽略(SGML特性),所以可以发生。但是在XML中不行。XHTML使元素成为可选的,而不是要由文档作者来插入外来元素。相应地,应用程序需要适应这一点。
C.12 在属性值中使用 &在属性值中含有&符号时,它必须用字符实体引用来表示 (即 " & "). 例如,当一个元素的
href 属性指向一个接收参数的 CGI脚本时,它必须表示为http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user,而不是
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user .
C.13 层叠样式表和XHTML层叠样式表 level 2推荐标准 [ CSS2] 定义style的属性,用于分析HTML和XML文档的树形结构。分析时的不通将导致不同的视觉或听觉效果,这依赖于使用的选择器。下面的技术可以减少对文档的这种影响,而用不修改这两中媒体类型:
附录 D. 致谢This appendix is informative. 本规范书由W3C HTML工作组成员参与编写 Steven Pemberton,CWI (HTML Working Group Chair) 附录. 参考文献This appendix is informative. 最新版本: http://www.w3.org/TR/REC-CSS2 最新版本: http://www.w3.org/TR/REC-DOM-Level-1 最新版本: http://www.w3.org/TR/html401 Available at http://www.ietf.org/rfc/rfc2046.txt. Note that this RFC obsoletes RFC1521,RFC1522,and RFC1590. Available at: http://www.ietf.org/rfc/rfc2119.txt Available at: http://www.ietf.org/rfc/rfc2376.txt This document updates RFC1738 and RFC1808. Available at: http://www.ietf.org/rfc/rfc2396.txt 最新版本: http://www.w3.org/TR/REC-xml XML namespaces provide a simple method for qualifying names used in XML documents by associating them with namespaces identified by URI. 最新版本: http://www.w3.org/TR/REC-xml-names
|
||