0

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

我定义了以下元标记:

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

不幸的是,w3 验证器抛出了一个没有意义的错误,因为内容实际上只是一个字符串:

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

谁能解释这个问题,我们需要客户端 jQuery 脚本中的不同信息,并且直到现在一直使用不同的元标记。

4

2 回答 2

1

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

这取决于 HTML 的版本。

大多数版本对此都很放松。HTML 5 有相当严格的限制(尽管其中包括“以及此 Wiki 页面上的任何内容”……据我所知,没有任何验证器能够保持最新状态)。

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

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

于 2012-12-07T10:52:25.027 回答
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">

如果你不在一开始就这样做,那么以后再尝试指定它为时已晚。

于 2012-12-07T11:50:55.390 回答