在HTML5中,为什么<img>标签需要结束斜线或结束标记?

当我知道<img>最后不需要结束斜线时,我有点惊讶。 例如<img src="my_pic.jpg" alt="picture of me">是有效的HTML5。 我认为在HTML4之后有一个过渡到最后有一个斜线或匹配的结束标记(例如, <br>成为<br /> )。 目前的趋势并不是使HTML尽可能符合XML标准,而是使用<img>而不是<img />来违反此规定? <img>被认为符合XHTML?


不,它不符合XML标准,也不符合要求。

HTML5有两种可用的语法。 一种是基于XHTML的XML语法。 另一个只是被称为“html”,它来源于原始的基于SGML的HTML。 在实践中,XML和HTML实现都不支持SGML的所有功能,所以最终有两种稍微不同的子语言。

HTML从SGML中取得的功能之一,但XML没有的是省略标签的想法。 例如,这里是IMG元素的SGML定义:

<!ELEMENT IMG - O EMPTY -- Embedded image -->

第一个“ - ”表示开始标签是必需的。 下面的“O”表示结束标签可以省略。 而“空”意味着元素不能有任何内容。

但是,进入XML而不是HTML的SGML功能之一是空结束标记,它允许您附加斜线以立即关闭标记。 这成为了XML的自闭标签功能。

因此,在XML语法中,可以使用自闭标签,而在html语法中,可以省略某些指定元素的开始或结束标记。

至于是否“目前的趋势是使HTML尽可能符合XML” - 好吧,这是一个意见和背景问题,但我不这么认为。 这绝对是12年前的趋势,但随后XHTML几乎停滞不前,许多人只是说:“拧它,它被解析为HTML。” 如果您想使用XML工具对它们进行操作,那么将您的文档构建为格式良好的XML仍然具有一定价值,但通常大多数人并不需要这样做。


请参阅是否(非无效)自闭标签在HTML5中有效?特别是第三个答案。

这在我心中是新鲜的,因为我被这个烧伤了。 我有

<div id="SearchResults" />
<input type="hidden" id="SearchResultId" />

其中,因为自闭标签中的结尾斜杠被忽略,所以在DOM中变成类似这样的东西

<div id="SearchResults">
    <input type="hidden" id="SearchResultId">
</div>

我通过AJAX检索数据,将隐藏字段设置为返回值,然后将div的内部内容设置为其他返回的数据。 我正在覆盖该过程中的隐藏字段,并且花了几个小时才弄清楚为什么隐藏的字段值没有被回传。

链接地址: http://www.djcxy.com/p/88919.html

上一篇: In HTML5 why does the <img> tag need a closing slash or a closing tag?

下一篇: Why does HTML5 not include a way of loading local HTML into the document?