1
4

5 回答 5

4

<并且&是 XML 中的一些预定义实体,在将页面验证为XML或时需要转义XHTML

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

&应替换为&amp;(&)

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

于 2013-06-15T18:00:08.343 回答
2

尝试用<![CDATA[]]>这样的标签包装你的 Javascript:

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

此外,您应该研究关注点分离。试着把你的逻辑移出你的视野。如果您的 Javascript 在您的 HTML 页面中,请尝试从单独的文件中包含它。

来自维基百科:

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

于 2013-06-15T18:00:35.710 回答
0
  1. 使用 HTML,而不是 XHTML(或者,如果您坚持使用 XHTML,请参阅有关如何编写可被解析为 HTML 的 XHTML 的指南)
  2. 我看不出您是如何产生该错误的。更多的上下文会很有用。
于 2013-06-15T18:00:49.620 回答
0

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

<!DOCTYPE html>

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

于 2013-06-15T18:01:09.833 回答
0

根据XML 规则,“& 字符 (&) 和左尖括号 (<) 不得以其文字形式出现,除非用作标记分隔符,或者在注释、处理指令或 CDATA 部分中。如果在其他地方需要它们,它们必须分别使用数字字符引用或字符串“ &amp;”和“ &lt;”进行转义。所以“&&”要写成&amp;&amp;

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

在 XHTML 1.0 规范中,著名的附录 C说:“如果您的脚本使用 < 或 & 或 ]]> 或 --,请使用外部脚本。” 如果您需要使用 XHTML,这是一种简单的解决方法。只需将您的脚本放在一个外部文件中并使用<script src="foo.js"></script>.

于 2013-06-15T19:29:27.430 回答