根据http://www.w3.org/TR/html401/interact/forms.html#h-17.4,输入元素应以单个>
结尾,而不是/>
。虽然大多数浏览器都可以处理以/>
结尾的输入元素,但这样的输入元素是否符合HTML语法规则?换言之, HTML 4中的<input ... />
和<br />
等元素有效吗?
(这个问题是关于HTML而不是XHTML !!!)
答案 0 :(得分:13)
语法有效在某些位置但与XHTML中的含义不同,所以不要使用它们。< / p>
在HTML 4中<foo />
(其中 foo 是定义为 EMPTY 的元素的名称)表示与<foo>>
相同,这意味着与<foo>>
相同(虽然几乎没有浏览器支持正确的语法,Emacs-W3曾经,但打破了与标准的兼容性,支持正确渲染所谓的HTML兼容的XHTML 1.0文档)。
因此,这在您可以拥有>
的地方有效,例如在<img>
允许<hr>
但在其他地方不允许的地方(例如<body>
<link …/>
<h1>Hello, world</h1>
的子元素(在严格中)。
与可选的开始和结束标记的规则的交互增加了更多的复杂性。在过渡文件中,这是有效的:
<link>
</head>
<body>
>
<h1>Hello, world</h1>
并且意味着:
<title/The quick brown fox/
这种简写语法可能对以下内容有用,或至少节省时间:
<title>The quick brown fox</title>
而不是更详细:
{{1}}
...但是the syntax has never been well supported并且规范说应该避免。
答案 1 :(得分:2)
实际解决了......根据W3C HTML 4验证器,最好不要在HTML 4中使用这种写元素名称的方式:
NET-enabling start-tag requires SHORTTAG YES
<br />
The sequence <FOO /> can be interpreted in at least two different ways,
depending on the DOCTYPE of the document. For HTML 4.01 Strict, the '/' terminates
the tag <FOO (with an implied '>'). However, since many browsers don't interpret it
this way, even in the presence of an HTML 4.01 Strict DOCTYPE, it is best to avoid
it completely in pure HTML documents and reserve its use solely for those written in XHTML.
答案 2 :(得分:-1)
来自HTML Compatibility Guidelines:
在空元素的尾随/
和>
之前加上一个空格,例如<br />
,<hr />
和<img src="karen.jpg" alt="Karen" />
。此外,对空元素使用最小化标记语法,例如<br />
,因为XML允许的替代语法<br></br>
在许多现有用户代理中提供了不确定的结果。