我真的想纠正一个W3C验证错误

时间:2013-06-15 17:56:29

标签: html w3c-validation

这将是我的第一个网站,我不想留下这些错误。有人可以帮我解决这些问题吗?

错误1:

if (xmlhttp.readyState==4 && xmlhttp.status==200)

错误:字符“&”是分隔符的第一个字符,但是作为数据出现。       当我和我的AJAX代码停止工作时 我不知道如何纠正这一点。

错误2:

…ems"><a href="brushdescription.php?id=<?php echo $popularbrushesrow['bd_brushi…

错误:字符“&lt;”是分隔符的第一个字符,但是作为数据出现

同样的错误,但这次是<

更新 我正在使用这个doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

5 个答案:

答案 0 :(得分:4)

<&是XML中predefined entities的部分内容,在将页面验证为XMLXHTML时需要转义。

<应替换为&lt;(小于)

&应替换为&amp;(&符号)

但是,如果在JavaScript中使用这些字符,您可以(而不是)将脚本包含在<![CDATA[]]>部分中,该部分指示解析器不将代码解释为标记,也不会导致验证错误。< / p>

答案 1 :(得分:2)

尝试使用<![CDATA[]]>标记包装您的Javascript,如下所示:

<script>
  //<![CDATA[
    // Javascript goes here.
  //]]>
</script>

另外,你应该研究separation of concerns。尝试将您的逻辑移出您的视图。如果您的Javascript位于HTML页面中,请尝试将其包含在单独的文件中。

来自维基百科:

  

超文本标记语言(HTML),层叠样式表(CSS)和JavaScript(JS)是用于开发网页和网站的互补语言。 HTML主要用于组织网页内容,CSS用于定义内容呈现样式,JS定义内容如何与用户交互和行为。从历史上看,情况并非如此。在引入CSS之前,HTML执行了定义语义和样式的职责。

答案 2 :(得分:0)

  1. 使用HTML,而不是XHTML(或者,如果您坚持使用XHTML,请参阅the guidelines,了解如何编写可以解析为HTML的XHTML。)
  2. 我看不出你怎么能产生那个错误。更多上下文会很有用。

答案 3 :(得分:0)

对于第一个错误,请考虑从XHTML切换到HTML5。使用XHTML几乎没有理由。使用此:

<!DOCTYPE html>

W3C验证器用于客户端代码,但似乎您正在尝试验证服务器端代码,因此验证PHP标记。发送渲染的代码以进行验证,第二个错误将消失。呈现的代码是浏览器中“查看源代码”下可见的代码。如果网址已经在某处,则可以提供该网址。

答案 4 :(得分:0)

XML rules,“&符号(&amp;)和左尖括号(&lt;)绝不能以字面形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&amp;”和“&lt;”进行转义。“所以”&amp;&amp;“将被写为{{ 1}}。

然而,仅当文档被处理为“真实的XHTML”时才会出现这种情况,因为已经使用XML内容类型发送文档,例如,使用HTTP标头&amp;&amp;。这样做意味着IE的旧版本会阻塞它,现代浏览器如果包含任何格式错误,将拒绝呈现文档。人们通常不这样做 - 他们只是使用XHTML,因为有人告诉他们这样做,他们的文档是以HTML文档类型发送的,这意味着Content-Type: application/xhtml+xml元素内容的处理方式不同。这解释了为什么满足验证程序的修复程序会导致分页。

在XHTML 1.0规范中,(in)着名的appendix C说:“如果你的脚本使用&lt;使用外部脚本。或者&amp;或]]&gt;或 - 。“如果您需要使用XHTML,这是一个简单的方法。只需将您的脚本放在外部文件中,然后使用script“调用”它。