HTML元标记验证错误 - 对内容的限制?

时间:2012-12-07 10:48:39

标签: html validation meta

对元标记内容中可能包含的内容有任何限制吗?

我定义了以下元标记:

    <meta name="doctype" content="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"/>

不幸的是,w3验证器会抛出一个不会产生错误的错误,因为内容实际上只是一个字符串:

  

“ - ”不是为任何属性指定的组的成员

任何人都可以解释这个问题,我们需要在客户端jQuery脚本中使用不同的信息,直到现在总是使用不同的元标记。

2 个答案:

答案 0 :(得分:1)

  

对元标记内容中可能包含的内容有任何限制吗?

这取决于HTML的版本。

大多数版本都很放松。 HTML 5有相当严格的限制(虽然包括“和这个Wiki页面上的任何内容”......但我知道没有验证器可以保持最新状态。)

  

“ - ”不是为任何属性指定的组的成员

这是因为您不能在用"个字符分隔的属性值中包含原始"字符。您需要将其表示为&quot;(或数字字符引用)。

答案 1 :(得分:0)

在任何HTML规范中,带有meta属性的name标记可能只包含任何内容。 (在实践中,这些标签大多数被任何软件忽略,但正式有效。)HTML5草案强加了非常具体的规则。

然而,在这种情况下,问题纯粹是语法问题,不依赖于HTML版本。字符串content="<!DOCTYPE HTML PUBLIC \"被解析为属性规范,其余的则导致语法错误。反斜杠(反向固定)“\”在HTML中没有特殊含义;它只是另一个角色,它不能作为任何形式的逃避符号。

然而,最终的问题是尝试使用meta标记来指定文档类型。它简单无法工作,即使您将语法修正为正式,也不会产生任何影响。指定文档类型的方法是在文档的最开头包含doctype声明,例如

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">

如果您一开始没有这样做,那么稍后尝试指定它为时已晚。