HTML 向 XHTML1.0 兼容性指导

 更新时间:2006年12月17日 00:00:00   作者:  
1 处理说明

一些用户代理程序会显示处理说明。但是,注意当文档中没有XML声明时,文档只能用缺省的字符编码UTF-8 或 UTF-16。

2 空元素

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

3 元素最小化和空元素内容

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

4 嵌入的样式表和Script

如果你的样式表使用 < 或 & 或 ]]> 或 --,用外部样式表。如果你的script用 < 或 & 或 ]]> 或 --,用外部script。 注意XML分析程序会在不告知的情况下除去注释的内容。因此,以前用注释的方法”隐藏”script和样式表的习惯使文档可以向后兼容,但是可能在基于XML的执行时不能按预期工作。

5 在属性值内部分行

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

6 Isindex

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

7 lang 和 xml:lang 属性

在指定元素的语言时同时使用 lang 和 xml:lang 属性。xml:lang 属性在前。

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版本中,它将被去除。

9 字符编码

要指定文档中的字符编码,同时在xml声明中使用编码属性指定 (如. <?xml version="1.0" encoding="EUC-JP"?>) 和在meta中用 http-equiv 语句 (如 <meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />).xml处理指令的编码属性值在前。

10 布尔属性

一些HTML用户代理程序在布尔属性以完全(非最小化)形式出现时不能解释它们,而这是XML1.0必须的。注意这个问题不会影响用户代理程序对HTML 4的兼容。包括以下一些属性: compact,nowrap,ismap,declare,noshade,checked,disabled,readonly,multiple,selected,noresize,defer.

11 文档对象模型和 XHTML

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

通过DOM访问text/html internet媒体类型XHTML文档的应用程序可以使用HTML DOM,还可以依赖这些界面返回的大写的元素名和属性名。
通过DOM访问text/xml或application/xml internet媒体类型XHTML文档的应用程序也可以使用XML DOM. 元素名和属性名将以小写形式返回。 并且,一些 XHTML 元素可以也可以不出现在对象树中,因为在内容模型中它们是可选的(如table中的 tbody 元素). 在HTML 4中,一些元素可以允许被最小化以至于它们的开始标签和结束标签都被忽略(SGML特性),所以可以发生。但是在XML中不行。XHTML使元素成为可选的,而不是要由文档作者来插入外来元素。相应地,应用程序需要适应这一点。

12 在属性值中使用 &

在属性值中含有&符号时,它必须用字符实体引用来表示 (即 "&amp;"). 例如,当一个元素的 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.

13 层叠样式表和XHTML

层叠样式表 level 2推荐标准 [CSS2] 定义style的属性,用于分析HTML和XML文档的树形结构。分析时的不通将导致不同的视觉或听觉效果,这依赖于使用的选择器。

下面的技术可以减少对文档的这种影响,而用不修改这两中媒体类型:

一、XHTML的CSS样式表应该用小写的元素和属性名。
二、在table中,tbody 元素会被HTML用户代理程序的分析器推断出,但是XML用户代理程序的分析器不会这么做。所以如果在CSS选择器中要被引用到,你应该总是明晰地加上tbody元素。
三、在XHTML 名址空间,用户代理程序将把”id”属性认作为一个ID类型的属性。因此,即使用户代理程序不能认出DTD,样式表也应该能够继续使用”#”简化选择器语法。
四、在XHTML 名址空间,用户代理程序将识别class属性,因此,样式表应该能构继续使用”.”简化选择器语法。
五、CSS 定义HTML和XML文档的不同一致性标准; 在XHTML文档以HTML表达时,用HTML规则,在XHTML文档以XML表达时,用XML规则。

相关文章

  • css层固定位置练习

    css层固定位置练习

    不错,可以方便提示用户等信息
    2008-08-08
  • CSS 浮动清理,不使用 clear:both标签

    CSS 浮动清理,不使用 clear:both标签

    CSS:浮动清理,不使用 clear:both标签 在进行浮动布局时,大多数人都深知,在必要的地方进行浮动清理:<div style="clear:both;"></div>。
    2008-07-07
  • 超级连接的提示中换行效果实现代码

    超级连接的提示中换行效果实现代码

    前段时间有网友在论坛发帖问"如何实现超级连接的多行显示",其实方法很简单就是使用title 和 alt就可以实现。
    2008-05-05
  • iframe 的用法与注意事项

    iframe 的用法与注意事项

    本文主要来讲述一下 iframe 的用法与注意事项: 好多同志对 iframe 是如何控制的,并不是十分了解,基本上还处于一个模糊的认识状态. 注意两个事项,ifr 是一个以存在的 iframe 的 ID 和 NAME 值:
    2008-04-04
  • 大家需要掌握的 html下SPAN和DIV的区别

    大家需要掌握的 html下SPAN和DIV的区别

    大家需要掌握的 html下SPAN和DIV的区别...
    2007-08-08
  • 95%的中国网站需要重写CSS

    95%的中国网站需要重写CSS

    95%的中国网站需要重写CSS...
    2007-01-01
  • 巧妙地使用CSS选择器

    巧妙地使用CSS选择器

    id用于标识页面唯一元素,id的名称是控制某一内容块的手段,通过将某内容块置入div并赋予唯一的id,就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。
    2008-05-05
  • Bootstrap的CSS样式全面使用介绍

    Bootstrap的CSS样式全面使用介绍

    Bootstrap 自带以下特性:全局的 CSS设置、定义基本的 HTML 元素样式、可扩展的 class,以及一个先进的网格系统。HTML的基本元素均可以通过class设置样式并得到增强效果。
    2023-07-07
  • 10条影响CSS渲染速度的写法与使用建议

    10条影响CSS渲染速度的写法与使用建议

    最近很少写CSS了,以后也可能写的会很少了,所以还是想把自已的一些经验能和大家分享一下,希望能给大家一些帮助!
    2008-09-09
  • Firefox下样式设置宽度奇怪现象

    Firefox下样式设置宽度奇怪现象

    前段时间做项目时碰到一个奇怪的现象
    2008-09-09

最新评论