Html 是否有一个规则来记住标签是否是自动关闭的?

Html 是否有一个规则来记住标签是否是自动关闭的?,html,Html,这项工作: <link rel="stylesheet" type="text/css" href="xxx.css" /> 但这并不是: <script type="text/javascript" src="xxx.js"/> 您实际上需要: <script type="text/javascript" src="xxx.js"></script> 为什么会出现这种不一致?这背后有什么理由可以帮助我记住它吗 我知道链接从来没有

这项工作:

<link rel="stylesheet" type="text/css" href="xxx.css" />

但这并不是:

<script type="text/javascript" src="xxx.js"/>

您实际上需要:

<script type="text/javascript" src="xxx.js"></script>

为什么会出现这种不一致?这背后有什么理由可以帮助我记住它吗

我知道
链接
从来没有内容,脚本可以在
之间有一个内联脚本(然后没有
src

但是:
语法将有足够的信息告诉解析器:这里没有内容,我现在就关闭它


那么,为什么不支持这样做呢?

只有在标记中没有子元素时才使用自动关闭标记

例如,
中可能包含一些代码

但是
不能有任何子元素,所以它是自动关闭的

在此处查找自动关闭元素的列表:

  • 区域
  • 基地
  • 上校
  • 嵌入
  • 人力资源
  • img
  • 输入
  • 凯根
  • 链接
  • param
  • 来源
  • 跟踪
  • wbr
。。。只有这些标签才允许自动关闭


要记住的规则是除了上面列表中的标签外,几乎没有标签。请记住最重要的标记。

只有在标记中没有子元素时才使用自动关闭标记

例如,
中可能包含一些代码

但是
不能有任何子元素,所以它是自动关闭的

在此处查找自动关闭元素的列表:

  • 区域
  • 基地
  • 上校
  • 嵌入
  • 人力资源
  • img
  • 输入
  • 凯根
  • 链接
  • param
  • 来源
  • 跟踪
  • wbr
。。。只有这些标签才允许自动关闭


要记住的规则是除了上面列表中的标签外,几乎没有标签。请记住最重要的一点。

HTML是建立在SGML之上的。SGML使用DTD来描述元素

DTD可以限制内容元素的种类。这包括永远不会有内容的“空”元素(您称之为“自动关闭”的元素)

这与可以包含内容的元素不同,但恰好相反

因此:

是一个长度为零的段落,而
确实是允许的。如果内容类型将实体描述为
application/xhtml+xml
而不是
text/html
,那么浏览器应该接受该表单

基于XML的规则可以允许这样做,因为它们在一些元素上没有可选的结束标记规则,而这些元素是基于SGML的表单(以及构建在这些元素上但在SGML遵从性方面不严格的更高版本表单)所拥有的


(表单
/>
前面带有空格的
/
是一个用于与两个表单兼容的表单,XML表单中的空元素需要
/
,而另一个表单将
/
组合视为可以忽略的内容)。

HTML构建在SGML之上。SGML使用DTD来描述元素

DTD可以限制内容元素的种类。这包括永远不会有内容的“空”元素(您称之为“自动关闭”的元素)

这与可以包含内容的元素不同,但恰好相反

因此:

是一个长度为零的段落,而
确实是允许的。如果内容类型将实体描述为
application/xhtml+xml
而不是
text/html
,那么浏览器应该接受该表单

基于XML的规则可以允许这样做,因为它们在一些元素上没有可选的结束标记规则,而这些元素是基于SGML的表单(以及构建在这些元素上但在SGML遵从性方面不严格的更高版本表单)所拥有的


(表单
/>
前面带有空格的
/
是一个用于与两个表单兼容的表单,XML表单中的空元素需要
/
,而另一个表单将
/
组合视为可以忽略的内容).

也许你可以避免`/>`总是-也许你可以避免`/>`总是-这与我在问题中给出的原因相同,但这并没有说明为什么不支持
(作为脚本标记的额外语法版本)。为什么不允许每次没有内容时都使用自动关闭标签呢?我添加了一个到w3网站的链接。这与我在问题中给出的原因相同,但这并没有说明为什么不支持
(作为脚本标记的额外语法版本)。为什么不允许每次没有内容时都使用自动关闭标签呢?我添加了一个到w3网站的链接。从定义上来说,它应该是这样的。