<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml><card  id="index"  title="驽鸟公寓  &raquo; Blog Archive  W3C验证失败的10个常见原因 | 驽鸟公寓"  ><p>
			标题：W3C验证失败的10个常见原因<br/>
			时间：2009-03-10 (11:53 下午)<br/>
			分类：<a href="index-wap.php?cat=671" title="View all posts in 前端技术" >前端技术</a><br/>
            标签：<a href="index-wap.php?tag=w3c">W3C</a>, <a href="index-wap.php?tag=%e5%a4%b1%e8%b4%a5">失败</a>, <a href="index-wap.php?tag=%e9%aa%8c%e8%af%81">验证</a><br/>
			作者：驽鸟<br/> 
            <br/>
            W3C validation有时难以操作，但用它你可以查看由版面设计引起的差错。验证程序抛出大量差错和警告，说明你的XHTML尚未完善，可能无法在不同浏览器上保持一致功能。下面十个细微的失效问题难住了大批程序员，我们告诉你如何解决。在本文开始前介绍一些使用W3C验证程序时需要注意的问题。
不要担心验证程序的警告&#8212;&#8212;如果验证程序说发现12处错误以及83处警告，不要理它，继续进行下一步。
一次更正一个错误&#8212;&#8212;按顺序进展工作，从上到下，一次修正一个错误。HTML用浏览器从上到下浏览，这些错误也是按同样顺序显示。
每次修正代码后要刷新代码，使它们重新生效&#8212;&#8212;一个小错误常常会引发之后整页的连串错误。因此如果操作不当，&#8220;修正错误&#8221;也可能引发更多错误。每次修正后使代码重新生效，这样就可以确保完全解决问题。
知道了上面这些基本的异常情况，下面我们就来看看版面设计无效的几个原因。

div 标签未关闭 
这是版面设计失效的最常见原因之一。当我们了解到这是多少精致的版块设计失效的罪魁祸首时，总会大吃一惊。开启的div标签是最普遍的版块设计失误之一，也是最难诊断的失误之一。验证程序有时会指向错误的开启div标签，诊断时就像大海捞针一样麻烦。 
麻烦的embed标签 
九十年代早期，Microsoft和Netscape的浏览器开始能够辨认非标准的独有字体。遗憾的是这意味着W3C验证程序还不能识别某些关键HTML 标签，如&#8220;embed&#8221;，即使这些标签已经被广泛使用。如果确实希望得到严格的DOCTYPE（文档类型）验证，就只能放弃嵌套。 
如果同时想要生效的版面设计和嵌入式媒体，可以试试Flash Satay方法。
不当的DOCTYPE声明 
不声明DOCTYPE，或者在文件开始错误声明DOCTYPE，也是一个常见错误。根据一般经验，Strict DOCTYPE是大家追求的最高级验证。Strict validation表明你的网页能够在所有浏览器上都得到最佳展示。Strict 声明代码如下：
&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&#62;
结尾斜线 
如果你的网站不能验证，很有可能是在代码的某个地方漏写了结尾斜线。我们很容易忽略结尾斜线之类的东西，特别是在image标签等元素中。例如： 
在严格的DOCTYPE中这是无效的。要在img标签结尾处加上&#8220;/&#8221;以解决此问题。
&#60;img src=&#34;&#34; alt=&#34;&#34;&#62;
Align标签
如果DOCTYPE被设为Transitional，你就会使用&#8220;align&#8221;标签，但如果要求更高一点希望得到Strict验证，你会看到很多错误。 Align是另一个不可用于版面设计的标签。可以尝试用&#8220;float&#8221;或者&#8220;text-align&#8221;来代替align转换元素。 
JavaScript
如果已经声明Strict DOCTYPE，就需要在JavaScript中覆盖CDATA标签。验证程序的这一方面难倒了很多程序员，因为网站倾向于为广告和追踪脚本使用嵌入的 JavaScript。如果必须用到JavaScript，可以在其前后加上如下标签： 
&#60;script type=&#34;text/javascript&#34;&#62;
/* &#60;![CDATA[ */
// JavaScript here
};
/* ]]&#62; */
&#60;/script&#62;
图像需要&#8220;alt&#8221;属性 
你可能还没有注意到，图像也是高级验证的潜在绊脚石。除了结尾斜线，高级验证也要求用alt标签来描述图像，如alt= &#8221;Scary vampire picture&#8221;.
搜索引擎也靠alt标签来识别网页上的图像，所以无论怎样加上alt标签总是好的。 
未知实体数据 
实体数据是又一个影响验证的易犯错误。我们可以考虑用适当的编码字符来代替&#8220;&#38;&#8221;等符号。entire list中列出在XHTML版块设计中可用的适当的编码字符实体数据。 
不良嵌套 
嵌套就是元素里又包括元素，如下所示：
&#60;div&#62;&#60;strong&#62;Sweet!&#60;/strong&#62;&#60;/div&#62;

我们容易混淆嵌套元素的顺序。例如在div标签前启动strong标签，但又先关闭div标签。这可能不会改变版块布局，但却会使你的版块设计失效。 
缺少&#8220;title&#8221;标签 
尽管这看上去是一个很明显的错误，很多程序员（包括我自己）还是经常会在&#8220;head&#8221;版块中遗漏title标签。当你看到&#8220;missing a required sub-element of HEAD&#8221;（缺少HEAD的必要子元素）时，才会发现自己忘记添加title标签了。
            <br/>	
            <span class="stamp">上一篇：</span><a href="index-wap.php?p=717">山东省2009年教师资格考试认定工作通知</a><br/>            <span class="stamp">下一篇：</span><a href="index-wap.php?p=715">教师资格证分类及其适用范围</a><br/>    
                        
			<br/><a href="index-wap.php">返回首页</a>
<br/>切换访问：<a href="index-wap2.php">2.0版</a> | 1.1版
</p></card></wml>