设计可以通过W3C效验器效验的网站,虽然不会给我的网站带来更多的流量,也不会影响网页显示的效果,但它可以督促我们养成良好的代码书写习惯,也为使网页能兼容多种浏览器,引导开发者轻松的实现从HTML到XML的过渡。
下面本人就效验过程中比较常见的错误加以说明并改正。
首先请看这样一段代码:

这段代码是可以被正确显示的,但我们通过W3C提供的XHTML效验时还是发现了不少的问题。
一、标签未结束错误

提示文字的意思是:标签未结束,请正确的关闭标签。根据提示:第9行23列的“p”标签和第10行14列的“br”标签没有关闭。修改方案:
把“<div><p>段落没有结束标签实例</div>”改为:“<div><p>段落没有结束标签实例</p></div>”,把“<div>第一行文字<br>第二行文字</div>”改为:“<div>第一行文字<br />第二行文字</div>”。
二、标签大小写混合错误

提示文字的意思是:标签元素未定义,下面列出了三种可能。第一种是可能含有frame;第二中是可能含有spacer或marquee等不被W3C认可的标签;第三种是可能用了大写的标签。根据提示:第11行的4、7列的“Div”和“P”未定义。修改方案:
把“<Div><P>标签大写</P></Div>”中的标签改为小写:“<div><p>标签大写</p></div>”。
三、属性赋值的格式错误

提示文字的意思是:没有按照正确的格式为属性赋值,且给出了整改方案。根据提示:第12行14列和13行50列的属性赋值错误。修改方案:
把“<div><p class=a>属性值没有用双引号括起来</p></div>”改为:“<div><p class="a">属性值没有用双引号括起来</p></div>”;把“><option selected>默认值</option>”改为:“><option selected="selected">默认值</option>”。
四、内容中包含特殊字符错误

提示文字的意思是:“<”是标签界定符的一部分,不应该出现在内容中;“&G”因为在XHTML中规定特殊字符都要用“&”加特定意思的的字符最后是分号“;”构成,如“&”就要写成“&”,如果不把“&”编码就会出现:不是实体,或没有定义的错误,由于缺少结束符分号“;”,所以还能引发标签未结束的一系列错误。修改方案:
把“<div>没有将特殊字符编码,5<10,A&G</div>”中的特殊字符“<”和“&”编码,改为:“<div>没有将特殊字符编码,5<10,A&G</div>”。
五、图片标签缺少“alt”属性和注释错误

15行58列指出:必要的“alt”属性没有定义。解决方案:把“<img src="http://www.w3cui.org/images/linklogo.gif" />”加上“alt”属性,如无任何意义,属性值可为空:“<img src="http://www.w3cui.org/images/linklogo.gif" alt="" />”;
16行23列指出:无效的注释声明。解决方案:把“<!-- 注 -- 释 -->”改为:“<!-- 注释 -->”或“<!-- 注 释 -->”等,只要不用两个破折号就可以,两个破折号只可以出现在注释的开头和结尾处。
六、其他错误
下面还有一些其他的错误,比如提示“标签未定义或未结束”等非常怪异的错误提示,其实都是上面错误造成的,如果有一处标签或对象未关闭,如特殊字符未编码化,也就没有“;”,所以导致后面是标签部分的字符也出错。
还有,我们在编写XHTML文档时要注意,XHTML已经放弃的标签,如spacer和marquee等,因为这些标签只在某些浏览器中有效,而不是被所有浏览器所支持,只是某些浏览器支持的独有标签,所以W3C不把它们看成是标准。如想实现marquee标签的滚动效果,建议可以用JavaScript编程实现。在CSS效验中也有很多属性是IE独有的,W3C同样不把他们看成是标准,在开发的时候要特别注意,要考虑各浏览器的兼容问题。
下面看看修改所有错误后的效验结果:


成功通过XHTML1.0的效验了!
其实,开发者需要记住的不是错误类型,而是要记住XHTML的代码规范,避免不必要的错误。如果出现本来没有任何错误的地方却提示错误,不要怕,一定是其他地方的错误造成的。耐下心来修改每一处错误,其他错误也就自然消失了,您也会成功通过效验的。
好文章,开眼了。我做过的网站一效验我脑袋都大,200多个错误。这回好了,自己慢慢改,有不明白的还得问你,到时还请赐教啊!
“放弃W3C效验的神化吧,我的网站就没通过,但运行的也很正常啊!”
没有被神化,运行好不代表你的代码就好。我用html4和xhtml1混合写照样运行好,但那种代码有什么优势么?
中国某些设计师就是自以为是。不在乎国际的变化。

