对元标记内容中可能包含的内容有任何限制吗?
我定义了以下元标记:
<meta name="doctype" content="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"/>
不幸的是,w3验证器会抛出一个不会产生错误的错误,因为内容实际上只是一个字符串:
“ - ”不是为任何属性指定的组的成员
任何人都可以解释这个问题,我们需要在客户端jQuery脚本中使用不同的信息,直到现在总是使用不同的元标记。
答案 0 :(得分:1)
对元标记内容中可能包含的内容有任何限制吗?
这取决于HTML的版本。
大多数版本都很放松。 HTML 5有相当严格的限制(虽然包括“和这个Wiki页面上的任何内容”......但我知道没有验证器可以保持最新状态。)
“ - ”不是为任何属性指定的组的成员
这是因为您不能在用"
个字符分隔的属性值中包含原始"
字符。您需要将其表示为"
(或数字字符引用)。
答案 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">
如果您一开始没有这样做,那么稍后尝试指定它为时已晚。